            =0000    2    nolist   =     0          ;set to 0 to generate listing
                     3             do    nolist     
                     4             LST   OFF        
                     5             else             
                     7             fin              
                     8             XC               
                     9             XC               
                     10            MX    3          ;8 BIT DATA, 8 BIT INDEXES
                     11            TR    ON         
                                   28-MAY-05   6:21:50 PM
                     13   
            =0000    14   debug    =     0          ;set to 1 when using APW debugger
                     15   
                     16   
                     17            ORG   $2000      ;RUNS FROM $C800-$CFFF SPACE
                     18   
                     19            DSK   DDT8OBJ    
                     20            PUT   EQU1       
                    >1    
                    >3    **********************************
                    >4    *  EQU1
                    >5    **********************************
                    >6    
                    >7    * ERROR NUMBERS
                    >8    
            =0001   >9    INVCOM   =     $01        ;INVALID COMMAND
            =0002   >10   NOADRS   =     $02        ;ADDRESS EXPECTED
            =0003   >11   NUMEXP   =     $03        ;NUMBER EXPECTED
            =0004   >12   BADPAR   =     $04        ;BAD COMMAND PARAMTERS
                    >13   
            =0010   >14   BRKFUL   =     $10        ;NO ROOM FOR ADDITIONAL BREAKPOINTS
                    >15   
            =0020   >16   NOWROM   =     $20        ;COMMAND WILL NOT WORK IN ROM
                    >17   
                    >18   * ZERO PAGE USAGE
                    >19   
            =0020   >20   ZBUF1    EQU   $20        
            =0020   >21   Z1LO     EQU   $20        
            =0021   >22   ZBUF2    EQU   $21        
            =0021   >23   Z1HI     EQU   $21        
            =0022   >24   Z2LO     EQU   $22        
            =0023   >25   Z2HI     EQU   $23        
            =0024   >26   ZBUF5    EQU   $24        
            =0025   >27   ZBUF6    EQU   $25        
            =0028   >28   BASL     EQU   $28        
            =0029   >29   BASH     EQU   $29        
            =002A   >30   BAS2L    EQU   $2A        
            =002B   >31   BAS2H    EQU   $2B        
            =0036   >32   CSWL     EQU   $36         ;ADDRESS OF OUTPUT ROUTINE STORED HERE.
            =0037   >33   CSWH     EQU   $37        
            =0038   >34   KSWL     EQU   $38         ;ADDRESS OF INPUT ROUTINE STORED HERE.
            =0039   >35   KSWH     EQU   $39        
                    >36   
            =03F0   >37   BRKVECLO EQU   $03F0      ;BREAK VECTOR OF AUTOSTART ROM
            =03F1   >38   BRKVECHI EQU   $03F1      ;" " " "
            =03FB   >39   NMILOC   EQU   $3FB        ;APPLE'S NMI VECTOR
            =07F8   >40   CNSLOT   EQU   $7F8        ;LAST ACTIVE PERIPHERAL CARD $CN FORM
                    >41   
                    >42   
                    >43   ********** SOFT SWITCHES **********
                    >44   
            =C007   >45   CXON     EQU   $C007       ;CXROM ON SWITCH
            =C006   >46   SLOTROM  EQU   $C006       ;CXROM OFF SWITCH
            =C015   >47   CXFLAG   EQU   $C015       ;CXROM STATUS FLAG
                    >48   
            =C000   >49   KBD      EQU   $C000       ;KEYBOARD DATA
            =C010   >50   KBDSTRB  EQU   $C010       ;CLEAR KEYBOARD STROBE
            =C030   >51   SPKR     EQU   $C030       ;SPEAKER
                    >52   
            =C000   >53   STR80OFF EQU   $C000      ;WRITE, ALLOW TXTPAGE1 TO SWITCH PAGE1/PAGE2
            =C001   >54   STR80ON  EQU   $C001       ;WRITE, ALLOW TXTPAGE1 TO SWITCH MAIN/AUX
            =C018   >55   STORE80  EQU   $C018       ;READ
                    >56   
            =C002   >57   READMAIN EQU   $C002      ;READ FROM MAIN MEM (WRITE)
            =C003   >58   READAUX  EQU   $C003       ;READ FROM AUX MEM (WRITE)
            =C013   >59   RAMRD    EQU   $C013       ;READ
                    >60   
            =C004   >61   WRITMAIN EQU   $C004      ;WRITE TO MAIN MEM (WRITE)
            =C005   >62   WRITAUX  EQU   $C005       ;WRITE TO AUX MEM (WRITE)
            =C014   >63   RAMWRT   EQU   $C014       ;READ
                    >64   
            =C008   >65   MAINZP   EQU   $C008       ;MAIN STACK & ZP (WRITE)
            =C009   >66   AUXZP    EQU   $C009       ;AUX STACK & ZP (WRITE)
            =C016   >67   ALTZP    EQU   $C016       ;READ
                    >68                             
            =C00C   >69   COL80OFF EQU   $C00C      ;80 COL DISPLAY OFF
            =C00D   >70   COL80ON  EQU   $C00D       ;80 COL DISPLAY ON
            =C01F   >71   RD80VID  EQU   $C01F       ;BIT 7 = 1 FOR 80 COL, 0 FOR 40 COL
                    >72   
            =C00E   >73   ALTCHOFF EQU   $C00E      ;WRITE, TURN OFF ALT CHAR SET
            =C00F   >74   ALTCHON  EQU   $C00F       ;WRITE, TURN ON ALT CHAR SET
            =C01E   >75   ALTCHAR  EQU   $C01E       ;READ
                    >76   
            =C050   >77   TEXTOFF  EQU   $C050       ;TEXT MODE OFF
            =C051   >78   TEXTON   EQU   $C051       ;TEXT MODE ON
            =C01A   >79   TEXT     EQU   $C01A       ;Read TEXT switch
                    >80   
            =C052   >81   MIXEDOFF EQU   $C052      ;ALL TEXT OR GRAPHICS
            =C053   >82   MIXEDON  EQU   $C053       ;R/W, MIXED TEXT AND GRAPHICS IF GRAPHICS ON
            =C01B   >83   MIXED    EQU   $C01B       ;Read MIXED switch
                    >84   
            =C054   >85   TXTPAGE1 EQU   $C054      ;TALK TO MAIN TEXT RAM
            =C055   >86   TXTPAGE2 EQU   $C055      ;TALK TO AUX TEXT RAM
            =C01C   >87   PAGE2    EQU   $C01C       ;Read PAGE2 switch
                    >88   
            =C056   >89   HIRESOFF EQU   $C056      ;HIRES MODE OFF
            =C057   >90   HIRESON  EQU   $C057       ;HIRES MODE ON
            =C01D   >91   HIRESFLG EQU   $C01D      ;Read HIRES switch
                    >92   
                    >93   ****************************************
                    >94   
                    >95   
            =FDF0   >96   COUT1APL EQU   $FDF0      ;USED TO RESTORE CSW IF EXT2 ENTERED WITH PR#N
            =FF69   >97   MONITOR  EQU   $FF69       ;APPLE MONITOR ENTRY POINT
                    >98   
                    >99   * ASCII CODES
                    >100  
            =0084   >101  EOT      EQU   $84         ;ASCII CODE FOR EOT
            =0087   >102  BEL      EQU   $87         ;ASCII BELL CODE
            =008B   >103  UPARROW  EQU   $8B         ;APPLE KEY CODE
            =008A   >104  DNARROW  EQU   $8A         ;APPLE KEY CODE
            =0095   >105  RTARROW  EQU   $95         ;APPLE KEY CODE
            =0088   >106  LTARROW  EQU   $88         ;APPLE KEY CODE
            =008D   >107  CR       EQU   $8D         ;ASCII CARRIAGE RETURN
            =008A   >108  LF       EQU   $8A         ;ASCII LINE FEED
            =0098   >109  CTRLX    EQU   $98         ;ASCII CONTROL-X
            =0093   >110  CTRLS    EQU   $93         ;ASCII CONTROL-S
            =009B   >111  ESC      EQU   $9B         ;ASCII KEY CODE
            =00FF   >112  DELETE   EQU   $FF         ;APPLE KEY CODE
                    >113  
                    >114  * SUPER SERIAL CARD LOCATIONS FOR SLOT #2
                    >115  
            =C0A9   >116  SSCSTAT  EQU   $C0A9      
            =C0A8   >117  SSCDATA  EQU   $C0A8      
            =C0AB   >118  SSCCONT  EQU   $C0AB      
            =C0A1   >119  SSCDIPS1 EQU   $C0A1      
            =C0A2   >120  SSCDIPS2 EQU   $C0A2      
            =C0AA   >121  SSCCOMAN EQU   $C0AA      
                    >122  
                    >123  * VIA BASE ADDRESSES
                    >124  
            =C810   >125  VIAORB   EQU   $C810       ;ADDRESS ORB
            =C801   >126  VIAORA   EQU   $C801       ;ADDRESS ORA
            =C802   >127  VIADRB   EQU   $C802       ;ADDRESS DRB
            =C803   >128  VIADRA   EQU   $C803       ;BASE ADDRESS DRA
            =C804   >129  VIAT1CL  EQU   $C804       ;VIA TIMER 1
            =C805   >130  VIAT1CH  EQU   $C805       ;VIA TIMER 1
            =C806   >131  VIAT1LL  EQU   $C806       ;VIA TIMER 1 LATCH LOW
            =C807   >132  VIAT1LH  EQU   $C807       ;VIA TIMER 1 LATCH HI
            =C808   >133  VIAT2CL  EQU   $C808       ;VIA TIMER 2
            =C809   >134  VIAT2CH  EQU   $C809       ;VIA TIMER 2
            =C80A   >135  VIASR    EQU   $C80A      
            =C80B   >136  VIAACR   EQU   $C80B      
            =C80C   >137  VIAPCR   EQU   $C80C      
            =C80D   >138  VIAIFR   EQU   $C80D       ;VIA INTERRUPT FLAG REGISTER
            =C80E   >139  VIAIER   EQU   $C80E       ;VIA INTERRUPT ENABLE REGISTER
            =C80F   >140  VIAORAN  EQU   $C80F      
                    >141  
            =C080   >142  SEGMBASE EQU   $C080      ;BASE ADDRESS OF CARD SLOT I/O SPACE.
                    >143  
                    >144  *-------------------------------------------------
                    >145  * BREAK STACK POINTERS (VALID ONLY FOR RAM SEG 6)
                    >146  * 50 BREAKS MAXIMUM
                    >147  * -------  SPECIAL NOTE ------------
                    >148  * No group may occupy more than 1 Bank
                    >149  
                    >150           DUM   $C838       ;LEAVE ROOM AT TOP OF SEG6 FOR VARIABLES
                    >151  
00C838: 00 00 00 00 >152  BRKTYPE  DS    50          ;BREAK TYPE
00C86A: 00 00 00 00 >153  BRKPBR   DS    50          ;BREAK PBR (BANK #)
00C89C: 00 00 00 00 >154  BRKHI    DS    50          ;HI ADDRESS BYTE
00C8CE: 00 00 00 00 >155  BRKLOW   DS    50          ;LOW ADDRESS BYTE
00C900: 00 00 00 00 >156  BRKTGHI  DS    50          ;TO GO, HI BYTE
00C932: 00 00 00 00 >157  BRKTGLOW DS    50         ;TO GO, LOW BYTE
00C964: 00 00 00 00 >158  BRKPASHI DS    50         ;TIMES TO PASS, HI BYTE
00C996: 00 00 00 00 >159  BRKPASLO DS    50         ;TIMES TO PASS, LOW BYTE
00C9C8: 00 00 00 00 >160  BRKDATA  DS    50          ;ORIGINAL DATA BYTE
                    >161  
                    >162           DEND             
                    >163  
                    >164  * START ONBOARD RAM
                    >165  
            =C900   >166  STACKBUF EQU   $C900      ;SEGMENT 7 BUFFER FOR USERS STACK
                    >167  
                    >168  ****************************************
                    >169  * KEEP THESE LOCATIONS IN THE SAME ORDER
                    >170  * IF POSSIBLE, SO THEY CAN BE PUBLISHED
                    >171  * FOR THE USERS OWN USE.
                    >172  ****************************************
                    >173  
                    >174           DUM   $C811      
                    >175  
00C811: 00 00       >176  ACC      DS    2           ;STORAGE FOR ACCUMULATOR
00C813: 00 00       >177  XREG     DS    2           ;STORAGE FOR X REGISTER
00C815: 00 00       >178  YREG     DS    2           ;STORAGE FOR Y REGISTER
00C817: 00 00       >179  STACK    DS    2           ;STORAGE FOR STACK POINTER
00C819: 00          >180  MSTATE   DS    1           ;MACHINE STATE
00C81A: 00          >181  STATUS   DS    1           ;STORAGE FOR STATUS REGISTER
00C81B: 00          >182  PCLO     DS    1           ;PROGRAM COUNTER LOW BYTE
00C81C: 00          >183  PCHI     DS    1           ;PROGRAM COUNTER HI BYTE
00C81D: 00          >184  PBR      DS    1           ;STORAGE FOR 65816 PBR REGISTER
                    >185  
00C81E: 00          >186  INVISIBL DS    1          ;0=NORMAL, NEGATIVE= INVISIBLE
                    >187  
00C81F: 00          >188  CMOSFLAG DS    1          ;0=6502, BIT 7=1=65C02, BIT 6=1=65816
                    >189  
                    >190  * SET OFFFLAG TO $80 IF I/O IS SLOT1 OR SERIAL
00C820: 00          >191  IOMODE   DS    1           ;0=NORMAL, BIT 7=1=SERIAL, BIT 6=1=SLOT1
00C821: 00          >192  OFFFLAG  DS    1           ;>$80= DON'T DISPLAY TO SCREEN
                    >193  
00C822: 00          >194  STRT2FLG DS    1          ;BIT 7 1=NORMAL ENTRY, 0=DO RTS AFTER INIT
                    >195  
                    >196  *************** END ********************
                    >197  
00C823: 00          >198  SLOTN0   DS    1           ;SLOT # FORMAT N0
00C824: 00          >199  ADDHI    DS    1           ;CURRENT BREAKPOINT ADDRESS BUFFER HI BYTE
00C825: 00          >200  ADDLOW   DS    1           ;" " " " " LO BYTE
00C826: 00          >201  ZBYTE1   DS    1          
00C827: 00          >202  ZBYTE2   DS    1          
00C828: 00          >203  ZBYTE3   DS    1          
                    >204  
                    >205  ****************************************
                    >206  ** DATABRK - SBTYPE MUST REMAIN TOGETHER BECAUSE OF UPDATE **
                    >207  
00C829: 00          >208  DATABRK  DS    1           ;DATA FROM BREAKPOINT
00C82A: 00          >209  LETTER1  DS    1           ;USED IN COMMAND FIND
00C82B: 00          >210  LETTER2  DS    1           ; " "
00C82C: 00          >211  LETTER3  DS    1           ; USED IN SEG3 COMDMA
00C82D: 00          >212  LETTER4  DS    1          
00C82E: 00          >213  LETTER5  DS    1          
00C82F: 00          >214  LETTER6  DS    1          
00C830: 00          >215  SBTYPE   DS    1           ;BREAK TYPE R OR I
                    >216  ***************** END ******************
                    >217  
00C831: 00          >218  DECIMAL1 DS    1          ;USED TO CONVERT
00C832: 00          >219  DECIMAL2 DS    1          ;LETTER 1,2,3 FROM
00C833: 00          >220  DECIMAL3 DS    1          ;DECIMAL TO HEX
                    >221  
00C834: 00          >222  PBRADD   DS    1           ;PBR FOR STAINDY & LDAINDY
00C835: 00          >223  MEMLOW   DS    1           ;MEMORY POINTERS USED BY
00C836: 00          >224  MEMHI    DS    1           ; MM, MD, LI COMMANDS
                    >225  
00C837: 00          >226  OPCODE   DS    1           ;USED IN SEG3
00C838: 00          >227  MLIFLAG  DS    1           ;0=MLI WAS DISASSEMBLED
00C839: 00          >228  IERBUFF  DS    1           ;VIAIER FLAGS
                    >229  
                    >230  *ENABLT VECTOR. NMI HANDLER (JUMPS) TO THIS LOCATION IF
                    >231  * TRACE CAUSED THE NMI.
00C83A: 00 00       >232  ENABLTVC DS    2          
00C83C: 00 00       >233  VECTSAVE DS    2          ;Save ENABLTVC here during SKPBRK
00C83E: 00          >234  STOPBRK  DS    1          ;<$80=STOP AT BRK WHEN TOGOFLG=0,>$7F=DON'T STOP
00C83F: 00          >235  YBUFF    DS    1           ;TEMP STORAGE FOR Y BUF
00C840: 00          >236  YBUF2    DS    1           ;USED BY TOCOUT
00C841: 00          >237  XBUFF    DS    1           ;TEMP STORAGE FOR X BUF
00C842: 00 00       >238  SUBTRACE DS    2          ;LOCATION OF SUBROUTINE FOR TRACE
00C844: 00          >239  SEGMCODE DS    1          ;CONTAINS CODED INFO ON WHERE TO TRANSFER
00C845: 00          >240  MODE     DS    1           ;MODE OF INSTRUCTION 01 TO 0D PLUS FF
                    >241  
                    >242  * WHEN RESTFLAG IS SET IT INDICATES THE I/O ROUTINES HAVE
                    >243  * BEEN USED WHICH DISTURBED THE SCREEN RAM OR ZPAGE LOCATIONS
                    >244  
00C846: 00          >245  RESTFLAG DS    1          
                    >246  
                    >247  **********************************
                    >248  ** PUT CXROM ROUTINES IN THIS  *
                    >249  ** SPACE. THEY WILL BE RUN FROM  *
                    >250  ** THE $C080-$C08F CARD I/O SPACE*
                    >251  **********************************
                    >252  
                    >253           ORG   $C880      
                    >254  
                    >255  * THIS FIRST BYTE MUST BE AT ADDRESS $C880
                    >256  
00C880: 00 00 00    >257           DS    3           ;STA CXON
00C883: 00 00       >258           DS    2           ;CMP ACTIVE SLOT
                    >259  ACTVSLOT                  
00C885: 00          >260           DS    1           ;ACTIVE SLOT
00C886: 00          >261           DS    1           ;LDA OR STA OR PLP,PHP,RTI
00C887: 00          >262  LOWADD   DS    1           ;SETUP BEFORE RUNNING
00C888: 00          >263  HIADD    DS    1           ; "      "       "
00C889: 00 00 00    >264           DS    3           ;STA SLOTROM
00C88C: 00          >265           DS    1           ;RTS
00C88D: 00 00 00    >266           DS    3          
                    >267  ****************************************
                    >268  
                    >269  *STORE Z PAGE LOCATIONS THAT MIGHT BE DISTURBED BY
                    >270  * EXT. I/O ROUTINES.
                    >271  
00C890: 00 00 00 00 >272  ZPAGEXT  DS    $C         
                    >273  
                    >274  **********************************
                    >275  ** TCOUNT TO POINT ARE CLEARED TO*
                    >276  ** ZERO DURING STARTUP. KEEP
                    >277  ** THEM TOGETHER
                    >278  **********************************
                    >279  
00C89C: 00 00       >280  TCOUNT   DS    2           ;USES DICIMAL NUMBERS 1 - 10000
00C89E: 00          >281  TFLAG    DS    1           ;TRACE FLAG
00C89F: 00          >282  REALTIME DS    1          ;NOT 0 IF REALTIME WINDOWS ARE SET
00C8A0: 00          >283  PROGONLY DS    1          ;NOT 0 IF PROG ONLY WINDOWS ARE SET
00C8A1: 00          >284  NOACCESS DS    1          ;NOT 0 IF NO ACCESS WINDOWS ARE SET
00C8A2: 00          >285  TRCBRK   DS    1           ;A BRK WAS JUST TRACED
00C8A3: 00          >286  BRKWFLG  DS    1           ;THE BRK WINDOW NEEDS UPDATING
00C8A4: 00          >287  WINDFLG  DS    1           ;>$80 = the windows are on
00C8A5: 00          >288  PASSFLG  DS    1           ;SET BY BREAK HANDLER
00C8A6: 00 00       >289  PASBREAK DS    2          ;PASS THIS BREAKPOINT UNTIL PASSFLAG = 0
00C8A8: 00          >290  EFLAG    DS    1           ;SET TO NON ZERO WHEN E COMMAND
00C8A9: 00          >291  RTSFLAG  DS    1           ;SET BY ES COMMAND. EXECUTE TO RTS.
00C8AA: 00          >292  EXECFLAG DS    1          
00C8AB: 00          >293  TSFLAG   DS    1           ;>=$80 IF COMDTS
00C8AC: 00          >294  ETFLAG   DS    1           ;USED BY CALCTIME
00C8AD: 00          >295  FLAG80   DS    1          
                    >296  
                    >297  *DISPFLAG FORMAT
                    >298  
                    >299  *BIT 7 = 80STORE 1=PAGE2 SWITCHES MAIN/AUX
                    >300  *BIT 6 = VBL (NO USE)
                    >301  *BIT 5 = TEXT 1=TEXT MODE 0=GRAPHICS MODE
                    >302  *BIT 4 = MIXED 1=MIXED SCREEN 0=FULL SCREEN
                    >303  *BIT 3 = PAGE2 1=PAGE2 OR AUX 0=PAGE1 OR MAIN
                    >304  *BIT 2 = HIRES 1=HIRES 0=LORES
                    >305  *BIT 1 = ALTCHARSET 1=ALT. CHAR ON 0=ALT. CHAR OFF
                    >306  *BIT 0 = 80COL 1=80 COL 0=40 COL
                    >307  
00C8AE: 00          >308  DISPFLAG DS    1          ;SAVE DISPLAY SWITCHES
                    >309  
00C8AF: 00          >310  SSCFLAG  DS    1           ;>$80= SSC INITIALIZED
                    >311  
                    >312  * MEMORY TO DISPLAY IN WINDOW
                    >313  * FORMAT = PBR,HI,LOW
                    >314  
00C8B0: 00 00 00 00 >315  MEMWADR  DS    12*3        ;12 LOCATIONS AT 3 BYTES EACH
                    >316  
00C8D4: 00 00 00    >317  EFFADRS  DS    3           ;EFFECTIVE ADDRESS (LO,HI,PBR)
                    >318  
                    >319  * MEMORY PROTECTION BUFFERS
                    >320  * TYPE, PBR, (LOWER LIMIT, HI, LOW) . (UPPER LIMIT, HI, LOW)
                    >321  
00C8D7: 00 00 00 00 >322  PROTADR  DS    6*6         ;6 LOCATIONS AT 6 BYTES EACH
00C8FB: 00          >323  TXSFLG   DS    1           ;0=LAST INSTR. WAS NOT TXS OR TCS, (TRACEN)
                    >324  
00C8FC: 00          >325  REALBRK  DS    1           ;COUNT OF REAL BREAKS
00C8FD: 00          >326  POINT    DS    1           ;STACK POINTER FOR BREAKS
                    >327  
                    >328  ************* END INITIALIZED RAM ***************
                    >329  
00C8FE: 00          >330  COMRTFLG DS    1          ;SET NEGATIVE BY COMDRT
00C8FF: 00          >331  RTBRKFLG DS    1          ;SET NEGATIVE BY COMDRT OR RTWINDOW
00C900: 00          >332  RTSTK    DS    1          ;SAVE STACK DURING REALTIME
00C901: 00          >333  RTOPCODE DS    1          ;SAVE OPCODE REPLACED BY REALTIME BRK
                    >334  
00C902: 00          >335  OLDSTACK DS    1          ;SAVE STACK DURING TRACEN
00C903: 00          >336  OLDMSTAT DS    1          ;SAVE MSTATE DURING TRACEN
                    >337  
                    >338  *THE FOLLOWING LOCATIONS ARE USED ONLY DURING
                    >339  * A SEGMENT CROSSOVER
00C904: 00          >340  ASAVESEG DS    1          ;SAVE ACC
00C905: 00          >341  XSAVESEG DS    1          ;SAVE X
00C906: 00          >342  PSAVESEG DS    1          ;SAVE P
00C907: 00 00 00    >343  ADDRBUFF DS    3          ;ADDRESS BUFFER
00C90A: 00          >344  CSWLBUTT DS    1          ;USED IF BUTTON IS PRESSED
00C90B: 00          >345  CSWHBUTT DS    1          
00C90C: 00          >346  KSWLBUTT DS    1          
00C90D: 00          >347  KSWHBUTT DS    1          
                    >348  
                    >349  * USED BY CALCTIME
00C90E: 00          >350  ETIERSAV DS    1          
00C90F: 00          >351  ETORASAV DS    1          
00C910: 00          >352  ETORBSAV DS    1          
00C911: 00          >353  ETPCLO   DS    1          
00C912: 00          >354  ETPCHI   DS    1          
                    >355  
00C913: 00 00       >356  OPERAND  DS    2           ;USED IN MINI ASSEMBLER TO STORE OPERAND
00C915: 00          >357  INITFLAG DS    1          ;INDICATES THE USER PROGRAM HAS BEEN EXECUTED
00C916: 00          >358  INTCXSOT DS    1          ;USED TO SAVE THE STATUS OF THE IIE'S CX ROM
                    >359  
00C917: 00          >360  INDY80S  DS    1           ;INDY SAVES 80STORE FLAG HERE
00C918: 00          >361  INDYBUF  DS    1           ;INDY SAVES ZP FLAG HERE
00C919: 00 00 00 00 >362  STKBUF   DS    16          ;SAVE ALT BANK STACK DATA HERE
                    >363  
00C929: 00          >364  RAMRDBF  DS    1           ;**
00C92A: 00          >365  RAMWRTBF DS    1          ;** MUST BE CONSECUTIVE
                    >366  
00C92B: 00          >367  HARDPBR  DS    1           ;BANK # OF HARDWARE BREAK
                    >368  
00C92C: 00          >369  DTOHFLG  DS    1           ;DEC TO HEX FLAG >$80 = CONVERT
00C92D: 00          >370  ADDRS2F  DS    1           ;2 ADDRESS ENTERED IF > $80 (ADD.ADD)
                    >371  
                    >372  *BIT 7=0=NATIVE MODE 65816,
                    >373  * BIT 7=1=6502 OR 65C02 OR 65816 IN 65C02 MODE
                    >374  
00C92E: 00          >375  EMULATE  DS    1           
                    >376  
00C92F: 00          >377  CXSTATUS DS    1          ;SAVE CXROM STATUS HERE
00C930: 00          >378  SLOTCN   DS    1           ;SAVE SLOT # $CN
                    >379  
00C931: 00          >380  KEY      DS    1           ;STOP COMMAND KEY
00C932: 00          >381  PROMPT   DS    1          
                    >382  * POINTS TO NEXT FREE LOCATION IN BUFFER
00C933: 00 00 00 00 >383  IN       DS    30          ;INPUT BUFFER IN EXT RAM
                    >384  
00C951: 00 00 00 00 >385  BASBUF   DS    4           ;BASL - BAS2H BUFFER
00C955: 00          >386  WINDLEFT DS    1          
00C956: 00          >387  WINDWDTH DS    1          
00C957: 00          >388  WINDTOP  DS    1          
00C958: 00          >389  WINDBTM  DS    1          
00C959: 00          >390  CURSHORZ DS    1          
00C95A: 00          >391  CURSVERT DS    1          
00C95B: 00          >392  INVFLG   DS    1          
00C95C: 00          >393  MEMHORZ  DS    1           ;TEMP STORAGE FOR SCREEN POINTER, USED BY COUT
                    >394  
00C95D: 00          >395  INLENGTH DS    1          
00C95E: 00          >396  MEMPBR   DS    1          
00C95F: 00          >397  NUMDISP  DS    1          
00C960: 00 00       >398  MNEMCOMP DS    2          
00C962: 00          >399  MFLAG    DS    1          
00C963: 00          >400  TOGOFLG  DS    1           ; SET TO 0 BY DECTOGO WHEN BRKTOGO = 0
                    >401  
00C964: 00 00 00 00 >402  SELFMOD  DS    4           ;RUN SELF MODIFING CODE FROM HERE IN SETDISP
                    >403  
                    >404           ORG   $C9A0      
                    >405  
                    >406  **** THIS MUST BE AT ADDRESS $C900 OR ABOVE ***
                    >407  
                    >408  **********************************
                    >409  ** PUT VECTOR HANDLING ROUTINES  *
                    >410  ** HERE IN RAM. THEY WILL BE  *
                    >411  ** RUN FROM THE $FFA0-$FFXX SPACE*
                    >412  **********************************
                    >413  
00C9A0: 00 00 00 00 >414           DS    61         
                    >415  
                    >416  *** THE FOLLOWING 4 BYTES ARE A ROUTINE LOADED IN SLOT2K
                    >417  *** AND RUN FROM EXTII RAM SPACE BY TRANSFR
                    >418  
00C9DD: 00          >419  LDATEMP  DS    1           ;ROUTINE RUN DURING SEGMENT XFR
00C9DE: 00 00       >420  TEMPSEG  DS    2           ;LDA TEMPSEG
00C9E0: 00          >421           DS    1           ;ROOM FOR RTS
                    >422  
00C9E1: 00 00 00    >423  TEMP     DS    3           ;TEMPORARY STORAGE LOCATIONS
                    >424  
                    >425  * RAM LOCATIONS $C9E6-$C9FF ARE RESERVED FOR VECTORS.
                    >426  
                    >427           ORG   $C9E6      
                    >428  
00C9E6: 00          >429  BRKLO816 DS    1          ;LOW BYTE OF 65816 BRK VECTOR
00C9E7: 00          >430  BRKHI816 DS    1          ;HI BYTE
00C9E8: 00 00       >431  ABORT    DS    2           ;NOT USED BY EXT
00C9EA: 00          >432  NMILO816 DS    1          ;LOW BYTE OF 65816 NMI VECTOR
00C9EB: 00          >433  NMIHI816 DS    1          ;HI BYTE
00C9EC: 00 00       >434  RESERV16 DS    2          ;NOT USED
00C9EE: 00 00       >435  IRQ816   DS    2           ;NOT USED BY EXT
00C9F0: 00 00 00 00 >436           DS    4           ;NOT USED
00C9F4: 00 00       >437  COP6502  DS    2           ;NOT USED BY EXT
00C9F6: 00 00       >438  RESERV02 DS    2          ;NOT USED
00C9F8: 00 00       >439  ABORT02  DS    2           ;NOT USED BY EXT
00C9FA: 00          >440  NMILO    DS    1           ;LOW BYTE OF 6502 NMI VECTOR
00C9FB: 00          >441  NMIHI    DS    1           ;HI BYTE
00C9FC: 00          >442  RESETLO  DS    1           ;LOW BYTE OF RESET VECTOR
00C9FD: 00          >443  RESETHI  DS    1           ;HI BYTE
00C9FE: 00          >444  IRQLO    DS    1           ;LOW BYTE OF 6502 IRQ/BRK
00C9FF: 00          >445  IRQHI    DS    1           ;HI BYTE
                    >446  
                    >447           DEND             
                     21            PUT   SEG0       
                    >2    ********************************
                    >3    * SEGZEROFONE
                    >4    ********************************
                    >5    
                    >6             ORG   $C800       ;2K SLOT
                    >7    
                    >8    * THE FOLLOWING IS RUN FROM THE CARD SLOT SPACE.
                    >9    *
                    >10   * NOTE! THE IIGS MUST BE IN EMULATION MODE
                    >11   
                    >12   * THIS IS FIRST INSTRUCTION IN EPROM
                    >13   
00C800: 38          >14   START1   SEC              
00C801: B0 01 =C804 >15            BCS   STAYIN     
                    >16   
                    >17   *-------------------------------------
                    >18   * --- Alternate entry point ---
                    >19   * Start here if you want the DDT card to do an RTS after it is
                    >20   * initialized.
                    >21   * The contents of the Accumulator determine the return condition as follows:
                    >22   * A = 02 The button & BRKs are not enabled, writing to DDT is enabled,
                    >23   *        accessing the vectors $FFE8-$FFFF is OK.
                    >24   * A = 03 The button is the only way back into the DDT. Accessing the vectors
                    >25   *        is OK. The DDT is write protected.
                    >26   * A = XX The button & BRKs are enabled, writing to DDT is enabled, accessing
                    >27   *        the vectors will disable the Apples ROM in the $FFxx addresses.  
                    >28   
00C803: 18          >29   START2   CLC              
00C804: 8D FF CF    >30   STAYIN   STA   $CFFF       ;GET 2K SPACE
00C807: EA          >31            NOP              ;SPECIAL LOCATION
00C808: 20 BC CE    >32            JSR   SAVEREG     ;SAVE REGISTERS, RAMRD & RAMWRT
00C80B: A9 A2       >33            LDA   #$A2        ;$A2 IS DEVICE SIGNATURE  
00C80D: 6E 22 C8    >34            ROR   STRT2FLG   ;BIT 7=0 DO AN RTS AFTER INITIALIZATION.
                    >35   
                    >36   * DETERMINE SLOT NUMBER
00C810: 20 FB CF    >37            JSR   PUTSLOT     ;PUT SLOT NUMBER ON STACK
00C813: BA          >38            TSX              
00C814: BD 00 01    >39            LDA   $0100,X    
                    >40   **********************************
                    >41   * GO TO 2K SLOT
                    >42   **********************************
                    >43   
00C817: 4C 64 CB    >44            JMP   SLOT2K     
                    >45   
                    >46   *---------------------------------------------------
                    >47   *  --- Warm entry --
                    >48   * Enter here after the DDT is initialized to preserve the user's settings.
                    >49   * Reset vectored here from 6502 or 65816
                    >50   * Also used as return point from COMDDO user subroutine
                    >51   
                    >52   RESETJMP                  
00C81A: 8D FF CF    >53            STA   $CFFF      
00C81D: 20 BC CE    >54            JSR   SAVEREG     ;SAVE REGISTERS
00C820: 38          >55            SEC              
00C821: 6E 15 C9    >56            ROR   INITFLAG   ;INDICATE USER MAY HAVE MESSED WITH SCREEN
00C824: 4C 87 CB    >57            JMP   ENTEREXT   ;DISPLAY MAIN SCREEN AND AWAIT COMMAND
                    >58   
                    >59   * NMI VECTORED HERE FROM 6502
                    >60   
00C827: CD FF CF    >61   NMIJUMP  CMP   $CFFF      
00C82A: 4C 47 CA    >62            JMP   NMIVEC      ;THIS INSTRUCTION IN SLOT ROM SPACE
                    >63                             ;JUMPS TO THE NMI HANDLER IN 2K SPACE
                    >64   
                    >65   * NMI VECTORED HERE FROM 65816
                    >66   
00C82D: CD FF CF    >67   NMI816   CMP   $CFFF       ;2K OFF
00C830: 4C 42 CA    >68            JMP   NMIVEC16   ;GOTO NMI ROUTINE
                    >69   
                    >70   * BRK VECTORED HERE FROM 65816
                    >71   
                    >72   BREAK816                  
00C833: CD FF CF    >73            CMP   $CFFF       ;2K OFF
00C836: 4C 00 CA    >74            JMP   BRKVEC16   ;GOTO BRK ROUTINE
                    >75   
                    >76   * IRQ VECTORED HERE FROM 6502
                    >77   
00C839: CD FF CF    >78   IRQJUMP  CMP   $CFFF       ;GET 2K SLOT
00C83C: 8D 11 C8    >79            STA   ACC         ;SAVE ACC
00C83F: 8D 26 C8    >80            STA   ZBYTE1     
00C842: 68          >81            PLA              ;GET CXROM STATUS OFF STACK
00C843: 8D 2F C9    >82            STA   CXSTATUS   ;SAVE
00C846: 68          >83            PLA              ;GET STATUS
00C847: 48          >84            PHA              
00C848: 29 10       >85            AND   #$10       
00C84A: F0 03 =C84F >86            BEQ   IRQ         ;INTERRUPT WAS CAUSED BY IRQ
00C84C: 4C 09 CA    >87            JMP   BREAK       ;INT WAS CAUSED BY BRK
00C84F: AD FF FF    >88   IRQ      LDA   $FFFF       ;- HI BYTE OF APPLES IRQ VECTOR
00C852: 48          >89            PHA              ;-
00C853: AD FE FF    >90            LDA   $FFFE       ;- LOW BYTE
00C856: 48          >91            PHA              ;-
00C857: 08          >92            PHP              ;- ANY STATUS WILL DO
00C858: 18          >93            CLC              
00C859: 90 67 =C8C2 >94            BCC   IRQENTRY   ;BRA TO ACTIVATE PERIPHERAL CARD
                    >95   
                    >96   ** ENABLE THE EXTERMINATORS 2K SLOT
                    >97   
00C85B: 8D FF CF    >98   EXTENAB  STA   $CFFF       ;DISABLE 2K SLOT
00C85E: 60          >99            RTS              ;RETURN TO CALLING PROGRAM
                    >100  
                    >101  **********************************
                    >102  * THIS POINT MUST BE BEFORE $CN7F
                    >103  **********************************
                    >104           ERR   *-1/$C87F  
                    >105  
                    >106  * RETURN FROM I/O ROUTINES TO CARD SLOT SPACE
                    >107  
            =C85E   >108  SLOTRTS  EQU   *-1         ;EQUATE FOR RTS
00C85F: 8D FF CF    >109           STA   $CFFF       ;DISABLE 2K
                    >110  
00C862: 8D 26 C8    >111           STA   ZBYTE1      ;SAVE
00C865: 8E 27 C8    >112           STX   ZBYTE2     
00C868: 8C 28 C8    >113           STY   ZBYTE3     
00C86B: BA          >114           TSX              
00C86C: A0 05       >115           LDY   #5         
00C86E: B9 19 C9    >116  :MORE    LDA   STKBUF,Y   ;RESTORE 6 BYTES OF STACK IN THIS SEG
00C871: 9D 00 01    >117           STA   $100,X     
00C874: CA          >118           DEX              
00C875: 88          >119           DEY              
00C876: 10 F6 =C86E >120           BPL   :MORE      
                    >121  
00C878: 8D 08 C0    >122           STA   MAINZP      ;MAIN STACK
00C87B: 2C 18 C9    >123           BIT   INDYBUF     ;MAIN OR AUX STACK ?
00C87E: 10 03 =C883 >124           BPL   :MAIN       ;MAIN
00C880: 8D 09 C0    >125           STA   AUXZP       ;AUX STACK
00C883: 4C DD CE    >126  :MAIN    JMP   RTSCONT     ;CONTINUE IN 2K SLOT
                    >127  
                    >128  ****************************************
                    >129  * THIS POINT MUST BE AFTER $Cn7F
                    >130  ****************************************
                    >131           ERR   $C87F/*    
                    >132  
                    >133  ***** EXECUTE THE USERS PROGRAM *****
                    >134  
            =C885   >135  TOEXECUT EQU   *-1        ;EQUATED FOR RTS
00C886: A9 DE       >136           LDA   #%11011110 ;CB2 LOW, CB1 POS EDGE, CA2 HI, CA1 NEG EDGE
00C888: 8D 0C C8    >137           STA   VIAPCR      ;REPLACE APPLE'S VECTORS
00C88B: AE 17 C8    >138           LDX   STACK       ;USE THIS STACK
00C88E: 9A          >139           TXS              
                    >140  
00C88F: 2C 2E C9    >141           BIT   EMULATE     ;816 MODE?
00C892: 30 04 =C898 >142           BMI   NOPBR       ;IF NO
00C894: AD 1D C8    >143           LDA   PBR         ;GET PROGRAM BANK REG.
00C897: 48          >144           PHA              ;ON STACK LIKE 816 INTERRUPT
                    >145  
00C898: AD 1C C8    >146  NOPBR    LDA   PCHI        ;-
00C89B: 48          >147           PHA              ;-
00C89C: AD 1B C8    >148           LDA   PCLO        ;-SET UP STACK FOR RTI
00C89F: 48          >149           PHA              
                    >150  
00C8A0: AD 1A C8    >151           LDA   STATUS      ;-
00C8A3: 48          >152           PHA              ;-
                    >153  
00C8A4: 09 20       >154           ORA   #$20        ;INDEXES BACK TO ORIGINAL FORM KEEP ACC 8 BIT
00C8A6: 48          >155           PHA              
00C8A7: 28          >156           PLP              
00C8A8: D8          >157           CLD              ;KEEP D CLEAR
                    >158  
00C8A9: AE 13 C8    >159           LDX   XREG        ;8 OR 16 BITS
00C8AC: AC 15 C8    >160           LDY   YREG       
00C8AF: A9 FF       >161           LDA   #$FF       
00C8B1: 8D 0D C8    >162           STA   VIAIFR      ;CLEAR OLD INTERRUPT FLAGS
00C8B4: AD 39 C8    >163           LDA   IERBUFF     ;GET INTERRUPT FLAGS FROM BUFFER
00C8B7: 8D 0E C8    >164           STA   VIAIER      ;ENABLE INTERRUPTS
                    >165  
                    >166  ******************************
                    >167  * TIME CRITICAL BELOW THIS POINT
                    >168  ******************************
                    >169  
00C8BA: A9 00       >170           LDA   #00        
00C8BC: 8D 09 C8    >171           STA   VIAT2CH     ;FOR EXECUTION TIME, DOES NOT CAUSE NMI
00C8BF: 8D 05 C8    >172           STA   VIAT1CH     ;STORE 00 IN COUNTER1, WILL CAUSE NMI ONLY
                    >173  *IF IT HAS BEEN ENABLED IN TRACE ROUTINE.
                    >174  
                    >175  * GO TO ROUTINE IN CARDS I/O SPACE BY PUTING THE ADDRESS
                    >176  * ON THE STACK AND USING AN RTS.
                    >177  * IF IRQ ENTRY, I/O SPACE ROUTINE MUST HAVE BEEN SETUP FOR
                    >178  * EXECUTE IF WE TRAPPED AN IRQ, SO ITS OK TO GO TO I/O
                    >179  
            =C8C1   >180  SLOTIO   EQU   *-1        
                    >181  IRQENTRY                  
00C8C2: A9 C0       >182           LDA   #$C0        ;I/O SPACE HI BYTE
00C8C4: 48          >183           PHA              
00C8C5: 18          >184           CLC              
00C8C6: 2C 2F C9    >185           BIT   CXSTATUS   ;WAS CXROM ON?
00C8C9: 10 0D =C8D8 >186           BPL   CXWASOFF   ;KEEP CXROM OFF
                    >187  *CXROM WAS ON
00C8CB: A9 7F       >188           LDA   #CXONRTI-1 ;LOW BYTE
00C8CD: 6D 23 C8    >189  GOTOIO   ADC   SLOTN0      ;SET FOR THIS SLOT
00C8D0: 48          >190           PHA              ;PUT LOW ADDR. BYTE ON STACK
00C8D1: AD 26 C8    >191           LDA   ZBYTE1      ;RESTORE
00C8D4: CD FF CF    >192           CMP   $CFFF       ;2K ROMS OFF
00C8D7: 60          >193           RTS              ;GOTO I/O SPACE ROUTINE POINTED TO BY STACK
                    >194  *THIS PATH MUST TAKE 4 CYCLES LONGER BECAUSE OF THE
                    >195  *DIFFERENCE IN I/O SPACE ROUTINES
                    >196  CXWASOFF                  
00C8D8: A9 82       >197           LDA   #CXOKRTI-1 
00C8DA: D0 F1 =C8CD >198           BNE   GOTOIO      ;<ALWAYS> 3CYCLES + 1 EXTRA CYCLE FOR
                    >199                            ;BRANCHING TO CXWASOFF =4
                    >200  
                    >201  *----------------------------------------
                    >202  * Pascal 1.1 slot interface
                    >203  *
                    >204  * Call the firmware routine specified bye the Acc in the
                    >205  * Pascal V1.1 compatible device in slot 1 or 2. Enter with:
                    >206  * IORETRN-1 pushed on stack for return address.
                    >207  * C1 or C2 pushed on stack as part of simulated JSR
                    >208  * V=0 slot2, V=1 slot1
                    >209  * Acc = offset to Pascal entry point offset.
                    >210  * X = character to write if writing or status request code.
                    >211  
            =C8DB   >212  TOPASCAL EQU   *-1        ;EQU for RTS
00C8DC: A8          >213           TAY              ;offset to Pascal firmware routine
00C8DD: CD FF CF    >214           CMP   $CFFF      ;disable 2K ROMS
00C8E0: 50 0E =C8F0 >215           BVC   :SLOT2     ;if slot 2
00C8E2: 2C 00 C1    >216           BIT   $C100      ;enable slot 1
00C8E5: B9 00 C1    >217           LDA   $C100,Y    ;Pascal firmware offset
00C8E8: 3A          >218           DEC              ;offset - 1
00C8E9: 48          >219           PHA              ;low byte of firmware offset -1
00C8EA: 8A          >220           TXA              ;character to send if writing or request code
00C8EB: A2 C1       >221           LDX   #$C1       ;slot 1
00C8ED: A0 10       >222           LDY   #$10       ;slot 1
00C8EF: 60          >223           RTS              ;simulate JSR to Pascal firmware
                    >224  
00C8F0: 2C 00 C2    >225  :SLOT2   BIT   $C200      ;enable slot 2
00C8F3: B9 00 C2    >226           LDA   $C200,Y    ;Pascal firmware offset
00C8F6: 3A          >227           DEC              ;offset - 1
00C8F7: 48          >228           PHA              ;low byte of firmware offset -1
00C8F8: 8A          >229           TXA              ;character to send if writing or request code
00C8F9: A2 C2       >230           LDX   #$C2       ;slot 2
00C8FB: A0 20       >231           LDY   #$20       ;slot 2
00C8FD: 60          >232           RTS              ;simulate JSR to Pascal firmware
                    >233  
                    >234           ERR   *-1/$C900  
                    >235  *********************************
                    >236  * STARTING SEGMENT 0 OF 2K SLOT.
                    >237  *********************************
                    >238  
00C8FE: A7 D0 F2 EF >239           ASC   "'Prodev' is a trademark of " 
00C919: D0 F2 EF E4 >240           ASC   "Prodev, Inc. with " 
00C92B: E1 EC EC A0 >241           ASC   "all rights reserved. " 
00C940: D4 E8 E9 F3 >242           ASC   "This program is property of Prodev, Inc. " 
00C969: C3 EF F0 F9 >243           ASC   "Copyright 1985,1986,1987,1988 by: "  
00C98B: D0 F2 EF E4 >244           ASC   "Prodev, Inc. " 
00C998: D0 AE CF AE >245           ASC   "P.O. Box 162, LaSalle, MI, 48145 "  
00C9B9: A8 B3 B1 B3 >246           ASC   "(313) 848-4012" 
                    >247  
                    >248           ERR   *-1/$CA00  
                    >249  *******************************************
                    >250  * MAKE SURE THIS POINT IS $CA00 OR HIGHER *
                    >251  *******************************************
                    >252  
00C9C7: FF FF FF FF >253           DS    $CA00-*,$FF 
                    >254  
                    >255  * THIS ROUTINE MUST RESIDE IN SEGMENT ZERO
                    >256  
                    >257  * BREAK FROM 65816
                    >258  
                    >259  BRKVEC16                  
00CA00: 20 31 CF    >260           JSR   INDEXTO8   ;SAVE 16 BIT INDEXES & SET TO 8 BIT
00CA03: 68          >261           PLA              ;GET CXROM STATUS OFF STACK
00CA04: 8D 2F C9    >262           STA   CXSTATUS   ;SAVE
00CA07: 80 04 =CA0D >263           BRA   BRK16      
                    >264  
                    >265  * BREAK FROM 6502
                    >266  
00CA09: 38          >267  BREAK    SEC              
00CA0A: 6E 2E C9    >268           ROR   EMULATE     ;NOT 65816 MODE
00CA0D: 68          >269  BRK16    PLA              ;GET STATUS
00CA0E: 20 C1 CE    >270           JSR   SAVXYSP     ;SAVE ALL REGS BUT ACC & RAMRD, RAMWRT.
00CA11: 20 23 CF    >271           JSR   ENABWRIT   ;DISABLE INTRUPTS, DON'T REPLACE APPLE VECTORS
00CA14: 68          >272           PLA              
00CA15: 38          >273           SEC              
00CA16: E9 02       >274           SBC   #2          ;CORRECT FOR THE WAY THE BRK INST WORKS
00CA18: 8D 1B C8    >275           STA   PCLO        ;SAVE LOW BYTE OF PC
00CA1B: 68          >276           PLA              
00CA1C: E9 00       >277           SBC   #0          ;SUBTRACT CARRY BIT (NOT C) IF NECESSARY
00CA1E: 8D 1C C8    >278           STA   PCHI        ;SAVE HI BYTE OF PC
00CA21: 8D 36 C8    >279           STA   MEMHI       ;USED BY SETMPBR
                    >280  
00CA24: 2C 2E C9    >281           BIT   EMULATE     ;816 MODE?
00CA27: 30 03 =CA2C >282           BMI   :BRK02      ;IF NO
00CA29: 68          >283           PLA              ;GET PBR FROM STACK
00CA2A: 80 04 =CA30 >284           BRA   :BRK816    
                    >285  
                    >286  * SET MEMPBR
00CA2C: 20 AE CF    >287  :BRK02   JSR   TRANSFR0   ;DO SETMSTAT & BANKCHEK
00CA2F: 46          >288           DFB   SETMPBRC   ;code  ACC = MEMPBR
                    >289  
00CA30: 8D 1D C8    >290  :BRK816  STA   PBR         ;SAVE
00CA33: BA          >291           TSX              
00CA34: 8E 17 C8    >292           STX   STACK       ;CORRECT STACK IF 816
                    >293  
00CA37: A9 FF       >294           LDA   #$FF       
00CA39: 8D 15 C9    >295           STA   INITFLAG   ;SET FLAG THAT USER'S PROGRAM HAS BEEN RUN.
                    >296  
00CA3C: 8D A5 C8    >297           STA   PASSFLG     ;CONTINUE WITH GO AFTER TRACING
00CA3F: 4C DE CB    >298           JMP   LOOKBRK     ; THRU BRK
                    >299  
                    >300  * NMI FROM 65816
                    >301  
                    >302  NMIVEC16                  
00CA42: 20 31 CF    >303           JSR   INDEXTO8   ;SAVE 16 BIT INDEXES & SET TO 8 BIT
00CA45: 80 07 =CA4E >304           BRA   NMI16      
                    >305  
                    >306  * NMI FROM 6502
                    >307  
                    >308  * YOU CAN WRITE TO RAM DURING BUTTON INTERRUPT UNTIL
                    >309  * THE BUTTON INPUT CAPACITOR CHARGES TO 0.6V (APPROX. 1MSEC)
                    >310  
00CA47: 8D 11 C8    >311  NMIVEC   STA   ACC         ;SAVE
00CA4A: 38          >312           SEC              
00CA4B: 6E 2E C9    >313           ROR   EMULATE     ;NOT 65816 MODE
00CA4E: 68          >314  NMI16    PLA              ;GET CXSTATUS OFF STACK
00CA4F: 8D 2F C9    >315           STA   CXSTATUS   
00CA52: AD 0D C8    >316           LDA   VIAIFR      ;VIA INTERRUPT FLAG REG.
00CA55: 30 34 =CA8B >317           BMI   OURNMI      ;IT'S OURS
00CA57: 68          >318           PLA              ;GET STATUS WHEN NMI OCCURED
00CA58: 8D 1A C8    >319           STA   STATUS      ;SAVE
00CA5B: 48          >320           PHA              ;RESTORE
                    >321  
00CA5C: 2C 2E C9    >322           BIT   EMULATE     ;16 BIT MODE?
00CA5F: 30 10 =CA71 >323           BMI   GOVEC8      ;IF NO
                    >324  *16 BIT
                    >325  * PHK PUSH PBR ON STACK
                    >326  
00CA61: A9 DE       >327           LDA   #%11011110 ;CB2 LOW, CB1 POS, CA2 HI, CA1 NEG
00CA63: 8D 0C C8    >328           STA   VIAPCR      ;PUT PCR BACK
00CA66: 4B          >329           phk              ;PUSH PBR ON STACK
00CA67: AD EB FF    >330           LDA   $FFEB       ;HI BYTE OF APPLE'S 65816 NMI VECTOR
00CA6A: 48          >331           PHA              
00CA6B: AD EA FF    >332           LDA   $FFEA       ;LOW BYTE
00CA6E: 48          >333           PHA              
00CA6F: 80 08 =CA79 >334           bra   TOIOJUMP   
                    >335  * 8 BIT
00CA71: AD FB FF    >336  GOVEC8   LDA   $FFFB       ;HI BYTE OF APPLE'S 6502 NMI VECTOR
00CA74: 48          >337           PHA              
00CA75: AD FA FF    >338           LDA   $FFFA       ;LOW BYTE
00CA78: 48          >339           PHA              
                    >340  TOIOJUMP                  
00CA79: AD 1A C8    >341           LDA   STATUS      ;GET STATUS WHEN NMI OCCURRED
00CA7C: 48          >342           PHA              ;PUT ORIG. STATUS SO MACHINE IN SAME STATE
00CA7D: AD 11 C8    >343           LDA   ACC         ;RESTORE ACC
00CA80: 2C 2F C9    >344           BIT   CXSTATUS   
00CA83: 10 03 =CA88 >345           BPL   SLOTOK      ;LEAVE CXROM OFF
00CA85: 4C D0 C0    >346           JMP   CXONRTI+$50 ;TURN CXROM ON & GOTO APPLES NMI ROUTINE.
00CA88: 4C D3 C0    >347  SLOTOK   JMP   CXOKRTI+$50 ;LEAVE CXROM OFF & GOTO APPLE'S NMI ROUTINE
                    >348  
                    >349  * ENABWRIT MUST BE EXECUTED BEFORE THE CAPACITOR ON THE
                    >350  * BUTTON INPUT IS CHARGED TO 0.6V (APPROX. 1MSEC)
                    >351  
00CA8B: 20 23 CF    >352  OURNMI   JSR   ENABWRIT   ;DISABLE INTERRUPTS & ENABLE EXT. FOR WRITE
00CA8E: AD 0B C8    >353           LDA   VIAACR     
00CA91: 09 20       >354           ORA   #%00100000 ;STOP T2 COUNT INCASE OF ET COMMAND
00CA93: 8D 0B C8    >355           STA   VIAACR     
00CA96: 68          >356           PLA              ;GET STATUS
00CA97: 20 C1 CE    >357           JSR   SAVXYSP     ;SAVE X,Y,S & P REG & RAMRD & RAMWRT
00CA9A: 68          >358           PLA              
00CA9B: 8D 1B C8    >359           STA   PCLO       
00CA9E: 68          >360           PLA              
00CA9F: 8D 1C C8    >361           STA   PCHI       
00CAA2: 8D 36 C8    >362           STA   MEMHI       ;USED BY SETMPBR
00CAA5: AD 2E C9    >363           LDA   EMULATE     ;816 MODE?
00CAA8: 30 03 =CAAD >364           BMI   :NMI02      ;IF NO
00CAAA: 68          >365           PLA              ;GET PBR FROM STACK
00CAAB: 80 04 =CAB1 >366           BRA   :NMI816    
                    >367  
                    >368  * SET MEMPBR WITH CURRENT BANK #
                    >369  
00CAAD: 20 AE CF    >370  :NMI02   JSR   TRANSFR0   ;DO SETMSTAT AND BANKCHEK
00CAB0: 46          >371           DFB   SETMPBRC   ;code,  ACC CONTAINS MEMPBR
                    >372  
00CAB1: 8D 1D C8    >373  :NMI816  STA   PBR         ;SAVE
00CAB4: BA          >374           TSX              
00CAB5: 8E 17 C8    >375           STX   STACK       ;CORRECT STACK IF 816
                    >376  
                    >377  * SETTING INITFLAG CAUSES THE TEXT PAGE & SWITCHES TO BE SAVED
                    >378  * BY THE EXTII OUTPUT ROUTINES IF INVISIBLE MODE IS ON.
                    >379  
00CAB8: A9 FF       >380           LDA   #$FF        ;SET FLAG TO INDICATE THAT USER'S
00CABA: 8D 15 C9    >381           STA   INITFLAG   ; PROGRAM HAS BEEN RUN.
00CABD: D8          >382           CLD              
00CABE: AD 0D C8    >383           LDA   VIAIFR      ;GET INTERRUPT FLAG REG.
00CAC1: 2D 39 C8    >384           AND   IERBUFF     ;TEST ONLY THOSE BITS THAT ARE ENABLED
00CAC4: 4A          >385           LSR              ;SHIFT ACC RIGHT TWO BITS
00CAC5: 4A          >386           LSR              
00CAC6: 90 06 =CACE >387           BCC   NOTBUTON   ;NOT BUTTON INPUT
                    >388  
                    >389  * SAVE THE STACK, WINDOW LIMITS AND PAGE #1 OF TEXT RAM.
                    >390  
00CAC8: 20 3A CB    >391           JSR   SAVESTK     ;SAVE THE STACK TO EXT
00CACB: 4C EF CA    >392           JMP   COMMDRCL   ;IF BUTTON
                    >393  
                    >394  NOTBUTON                  
00CACE: 4A          >395           LSR              ;SHIFT 0 IN
00CACF: 4A          >396           LSR              
00CAD0: 4A          >397           LSR              
00CAD1: 90 27 =CAFA >398           BCC   NOTHBR      ;NOT HARDWARE BREAKPOINT
00CAD3: 2C AC C8    >399           BIT   ETFLAG      ;WAS HARD BREAK CAUSED BY ET
00CAD6: 30 41 =CB19 >400           BMI   CONTNMI     ;IF YES
                    >401  
00CAD8: AD 1D C8    >402           LDA   PBR        
00CADB: CD 2B C9    >403           CMP   HARDPBR     ;STOP IN THIS BANK?
00CADE: F0 08 =CAE8 >404           BEQ   :HARDSTP   ;IF YES
00CAE0: 2C 9E C8    >405           BIT   TFLAG       ;TRACING ?
00CAE3: 30 15 =CAFA >406           BMI   NOTHBR      ;IF YES
00CAE5: 4C A5 CE    >407           JMP   EXECUTE     ;IF NO
                    >408                            
                    >409  :HARDSTP                  
00CAE8: 20 3E CB    >410           JSR   SVESTK16   ;SAVE 16 BYTES ABOVE STACK POINTER
00CAEB: 20 AE CF    >411           JSR   TRANSFR0   ;DISPLAY "HARD BREAK"
00CAEE: 14          >412           DFB   DISHARDC   ;CODE
                    >413  COMMDRCL                  
00CAEF: A9 BF       >414           LDA   #%10111111 
00CAF1: 2D 39 C8    >415           AND   IERBUFF     ;DISABLE VIAT1 (TRACE)
00CAF4: 8D 39 C8    >416           STA   IERBUFF    
00CAF7: 4C 96 CD    >417           JMP   COMDDR     
                    >418  
                    >419  NOTHBR                    
00CAFA: AE FB C8    >420           LDX   TXSFLG      ;WAS LAST INST A TXS OR TCS?
00CAFD: F0 08 =CB07 >421           BEQ   SVESCONT   ;IF NO 
                    >422  
                    >423  * LAST INST WAS TXS OR TCS SO RESTORE 16 BYTES BELOW OLDSTACK
                    >424  
00CAFF: AE 02 C9    >425           LDX   OLDSTACK   ;STACK POINTER
00CB02: A9 0F       >426           LDA   #15         ;#-1 BYTES TO RESTORE
00CB04: 4C D7 CC    >427           JMP   RESTSTK     ;GO RESTORE
                    >428  SVESCONT                  ;COME HERE AFTER RESTSTK
                    >429  
                    >430  * IF AUX/MAIN STACKS WERE JUST SWITCHED THEN.
                    >431  * SAVE THE NEW STACK TO EXT RAM. PUT ALT STACK BYTES
                    >432  * ,THAT WERE SAVED IN TRACEN, FROM STACK POINTER DOWN
                    >433  * 16 BYTES TO EXT RAM TO CORRECT FOR NMI VECTORS.
                    >434  
00CB07: AD 19 C8    >435           LDA   MSTATE      ;NEW MSTATE
00CB0A: 4D 03 C9    >436           EOR   OLDMSTAT   ;HAS STK FLAG CHANGED
00CB0D: 10 07 =CB16 >437           BPL   :SAMESTK   ;IF NO
                    >438  
00CB0F: 20 3A CB    >439           JSR   SAVESTK     ;SAVE STACK
00CB12: 20 AE CF    >440           JSR   TRANSFR0   ;RESTORE 16 BYTES BELOW POINTER
00CB15: 56          >441           DFB   RESTALTSC  ;code
                    >442  
                    >443  :SAMESTK                  
00CB16: 20 3E CB    >444           JSR   SVESTK16   ;SAVE 16 BYTES ABOVE STACK POINTER
                    >445  
00CB19: A9 BF       >446  CONTNMI  LDA   #%10111111 
00CB1B: 2D 39 C8    >447           AND   IERBUFF     ;DISABLE VIAT1 INTERRUPT
00CB1E: 8D 39 C8    >448           STA   IERBUFF    
                    >449  
                    >450  * WAS A NON EXT BRK JUST TRACED ?
00CB21: 2C A2 C8    >451           BIT   TRCBRK     
00CB24: 10 11 =CB37 >452           BPL   :NOBRK      ;IF NO
00CB26: AD FE FF    >453           LDA   $FFFE       ;PUT PROPER BRK VECTOR IN PC
00CB29: 8D 1B C8    >454           STA   PCLO       
00CB2C: AD FF FF    >455           LDA   $FFFF       ;HI BYTE
00CB2F: 8D 1C C8    >456           STA   PCHI       
00CB32: A9 00       >457           LDA   #0         
00CB34: 8D A2 C8    >458           STA   TRCBRK      ;CLEAR FLAG
                    >459  
00CB37: 6C 3A C8    >460  :NOBRK   JMP   (ENABLTVC) ;GO TO THE TRACE VECTOR LOCATION
                    >461  
                    >462  
                    >463  ***********************************
                    >464  * SAVE THE BYTES ABOVE THE STACK POINTER IN USER STACK
                    >465  * TO EXT STACKBUF
                    >466  
                    >467  SAVESTK                   
                    >468  
00CB3A: A9 F8       >469           LDA   #$F8        ;SAVE FROM POINTER UP $F8 BYTES
00CB3C: D0 02 =CB40 >470           BNE   SVESTK     
                    >471  
                    >472  SVESTK16                  
00CB3E: A9 10       >473           LDA   #16         ;SAVE FROM POINTER UP 16 BYTES
                    >474  
00CB40: 48          >475  SVESTK   PHA              ;NUMBER OF BYTES TO SAVE
                    >476  
00CB41: AE 17 C8    >477           LDX   STACK       ;STACK POINTER
00CB44: AC 23 C8    >478           LDY   SLOTN0     
                    >479  **********************************
                    >480  * WARNING, SEGMENT DEPENDENT CODE   
                    >481  **********************************
00CB47: A9 70       >482           LDA   #%01110000 ;RAM 7, ROM 0
00CB49: 99 80 C0    >483           STA   SEGMBASE,Y 
                    >484  
00CB4C: 8C 15 C8    >485           STY   YREG        ;SAVE IN RAM7
00CB4F: 68          >486           PLA              ;NUMBER OF BYTES TO SAVE
00CB50: A8          >487           TAY              
00CB51: E8          >488  :NEXT    INX              
00CB52: BD 00 01    >489           LDA   $0100,X     ;GET FROM STACK
00CB55: 9D 00 C9    >490           STA   STACKBUF,X ;SAVE IN EXT STACK BUFFER
00CB58: 88          >491           DEY              
00CB59: D0 F6 =CB51 >492           BNE   :NEXT      
                    >493  
00CB5B: AC 15 C8    >494           LDY   YREG        ;SLOTN0
                    >495  ***********************************
                    >496  * WARNING, SEGMENT DEPENDENT CODE
                    >497  ***********************************
00CB5E: A9 00       >498           LDA   #%00000000 ;RAM 0, ROM 0
00CB60: 99 80 C0    >499           STA   SEGMBASE,Y 
00CB63: 60          >500           RTS              
                    >501  
                    >502  **********************************
                    >503  ** COME HERE FROM CARD SLOT SPACE*
                    >504  **********************************
                    >505  
                    >506  SLOT2K                    
00CB64: 8D 30 C9    >507           STA   SLOTCN      ;SAVE SLOTCN
00CB67: 0A          >508           ASL              
00CB68: 0A          >509           ASL              
00CB69: 0A          >510           ASL              
00CB6A: 0A          >511           ASL              
00CB6B: 8D 23 C8    >512           STA   SLOTN0      ;SAVE SLOT NUMBER N0
                    >513  
                    >514  ****************************************
                    >515  * HEY! THIS MUST BE DONE BEFORE ANY TRANSFRS.
                    >516  *
                    >517  *** PUT LDA & RTS INSTRUCTIONS IN EXTII RAM
                    >518  *** THAT MAKE UP LDATEMP ROUTINE, TEMPSEG IS MODIFIED
                    >519  *** BY TRANSFR BEFORE RUNNING, USED TO LOAD CODE BYTE
                    >520  
00CB6E: A9 AD       >521           LDA   #$AD        ;OPCODE FOR LDA ADDRESS
00CB70: 8D DD C9    >522           STA   LDATEMP     ;STORE IN EXTII RAM
00CB73: A9 60       >523           LDA   #$60        ;CODE FOR RTS
00CB75: 8D E0 C9    >524           STA   LDATEMP+3  ;STORE IN EXTII RAM
                    >525  
00CB78: D8          >526           CLD              
                    >527  * Init RAM & VIA, display windows
00CB79: 20 AE CF    >528           JSR   TRANSFR0   ;INITIALIZE RAM VECTORS & VIA
00CB7C: 36          >529           DFB   INITRAMVC  ;CODE
                    >530  
                    >531  * display version number
                    >532  * also set carry if exiting with an RTS
                    >533  
00CB7D: 20 AE CF    >534           JSR   TRANSFR0   
00CB80: 1D          >535           DFB   DISVERSC   ;code
                    >536  
                    >537  * DO AN RTS BACK TO USER OR CONTINUE INTO EXT II.?
00CB81: 90 3A =CBBD >538           BCC   TOMAIN10   ;ENTER EXT II
                    >539  
                    >540  ********************
                    >541  * LEAVE DDT
                    >542  ********************
                    >543  
00CB83: 8D 0C C8    >544           STA   VIAPCR      ;Set return condition
00CB86: 60          >545           RTS              ;RETURN BACK TO USER WITH DDT INITIALIZED
                    >546  
                    >547  * COME HERE FROM WARM ENTRY OR RESET
                    >548  
                    >549  ENTEREXT                  
00CB87: 20 23 CF    >550           JSR   ENABWRIT   ;Disable all interrupts, put /INIT low
00CB8A: 20 AE CF    >551           JSR   TRANSFR0   ;ZPAGESAVE, SETMSTAT, DISPON
00CB8D: 7E          >552           DFB   WARMINITC  ;code
00CB8E: 4C 9D CF    >553           JMP   MAIN10     ;get next command
                    >554  
                    >555  ******************************
                    >556  *  COMDRT - REAL TIME
                    >557  ******************************
                    >558  
                    >559  * Run the users program in real time to the matching RTS.
                    >560  * The current instruction is traced first
                    >561  
00CB91: 8D FE C8    >562  COMDRT   STA   COMRTFLG   ;INDICATE COMMAND RT
00CB94: A9 A1       >563           LDA   #NMICOMRT  ;LOW BYTE
00CB96: 8D 3A C8    >564           STA   ENABLTVC   ;TO HI BYTE NMI VECT
00CB99: A9 CB       >565           LDA   #>NMICOMRT ;HI BYTE
00CB9B: 8D 3B C8    >566           STA   ENABLTVC+1 ;TO LOW BYTE NMI VECT
00CB9E: 4C EB CB    >567           JMP   STEP1       ;TRACE ANY KIND OF INSTRUCTION
                    >568  
                    >569  NMICOMRT                  
00CBA1: 20 AE CF    >570           JSR   TRANSFR0   ;SET UP FOR REALTIME & GOTO EXECUTE
00CBA4: 44          >571           DFB   SETUPRTC   ;code
                    >572  
                    >573  * returns if a BRK could not be placed at the instruction 
                    >574  * pointed to by the stacked return address.
                    >575  
00CBA5: A9 20       >576           LDA   #NOWROM     ;ERROR NUMBER
00CBA7: D0 0D =CBB6 >577           BNE   ERREXIT0   ;<ALWAYS>
                    >578  
                    >579  ********************************
                    >580  *  COMDEX
                    >581  ********************************
                    >582  
00CBA9: 8D A8 C8    >583  COMDEX   STA   EFLAG      
                    >584  
                    >585  ********************************
                    >586  *  COMDTR
                    >587  ********************************
                    >588  
            =CBAC   >589  COMDTR   EQU   *          
00CBAC: F0 24 =CBD2 >590           BEQ   TRACE1      ;NO, DO ONE TRACE
                    >591  ECOMMAND                  
00CBAE: 20 AE CF    >592           JSR   TRANSFR0   ;READ NUMBER
00CBB1: 09          >593           DFB   CHKREADC   ;code
00CBB2: 90 0C =CBC0 >594           BCC   LOADT       ;IF VALID
00CBB4: A9 04       >595  BADPAR0  LDA   #BADPAR     ;ERROR NUMBER
                    >596  
                    >597  ERREXIT0                  
00CBB6: 8D 00 CF    >598           STA   $CF00       ;ENABLE EXT RAM
00CBB9: 20 AE CF    >599           JSR   TRANSFR0   ;INVALID COMMAND
00CBBC: 35          >600           DFB   ERRBEEPC   ;CODE BYTE
00CBBD: 4C 9D CF    >601  TOMAIN10 JMP   MAIN10     
                    >602  
00CBC0: AD 2A C8    >603  LOADT    LDA   LETTER1     ;GET L.S. BYTE
00CBC3: 8D 9D C8    >604           STA   TCOUNT+1   
00CBC6: AD 2B C8    >605           LDA   LETTER2     ;GET M.S. BYTE
00CBC9: 8D 9C C8    >606           STA   TCOUNT      ;LOAD TCOUNT
00CBCC: 4C DB CB    >607           JMP   SKPBRK      ;LOOK FOR BREAK
                    >608  
                    >609  ********************************
                    >610  *  COMDER
                    >611  ********************************
                    >612  
00CBCF: 8D A9 C8    >613  COMDER   STA   RTSFLAG    
                    >614  
00CBD2: A2 00       >615  TRACE1   LDX   #0         
00CBD4: 8E 9C C8    >616           STX   TCOUNT     
00CBD7: E8          >617           INX              
00CBD8: 8E 9D C8    >618           STX   TCOUNT+1   ;SET TCOUNT FOR ONE TRACE
                    >619  
                    >620  *---------------------------------------------
                    >621  * DO 1 INSTRUCTION, EVEN OUR REAL BREAK, DON'T STOP
                    >622  * EVEN IF BREAK COUNT REACHES ZERO, THEN
                    >623  * GO TO THE NMITRC VECTOR LOCATION
                    >624  * THIS ALLOWS CONTINUING THROUGH A BREAK WITH TR, EX & ER
                    >625  
00CBDB: 38          >626  SKPBRK   SEC              
00CBDC: B0 01 =CBDF >627           BCS   LTRACEVC   ;<ALWAYS>
                    >628  
                    >629  *-----------------------------
                    >630  * DO 1 INSTRUCTION, EVEN OUR REAL BREAK, BUT
                    >631  * STOP IF THE BREAK COUNT REACHES ZERO, ELSE GOTO
                    >632  * NMITRC.
                    >633  
00CBDE: 18          >634  LOOKBRK  CLC              
                    >635  
                    >636  LTRACEVC                  
00CBDF: A9 CD       >637           LDA   #>NMITRC   ;USED AS FLAG (ALWAYS > $7F) AND ADDRESS
00CBE1: 8D 3B C8    >638           STA   ENABLTVC+1 ;GO TO NMITRC AFTER TRACING
00CBE4: A9 4A       >639           LDA   #NMITRC     ;.. 1 INSTRUCTION
00CBE6: 8D 3A C8    >640           STA   ENABLTVC   
00CBE9: 90 01 =CBEC >641           BCC   SKIPTRAC   ;DON'T SET STOP FLAG (CARRY) IF CLEAR 
                    >642  
                    >643  *-----------------------------------
                    >644  * SAME AS SKPBRK BUT DON'T LOAD NMITRC VECTOR INTO
                    >645  * ENABLTVC. GO TO THE CURRENT ENABLTVC VECTOR LOCATION
                    >646  * AFTER DOING 1 INSTRUCTION.
                    >647  
00CBEB: 38          >648  STEP1    SEC              
                    >649  SKIPTRAC                  
00CBEC: 6E 3E C8    >650           ROR   STOPBRK     ;<$80=STOP IF TOGOFLG=0,>$7F=DON'T STOP
00CBEF: 20 AE CF    >651           JSR   TRANSFR0   ;IF OUR BRK, DEC TOGO 
00CBF2: 3A          >652           DFB   DECTGPCC   ;code
00CBF3: 30 3B =CC30 >653           BMI   TRACEN      ;NOT BREAK OR NOT OURS
00CBF5: 08          >654           PHP              ;SAVE STATUS
                    >655  
00CBF6: 38          >656           SEC              
00CBF7: 6E A3 C8    >657           ROR   BRKWFLG     ;NEED TO UPDATE THE BRK WINDOW  
                    >658  
00CBFA: 2C 3E C8    >659           BIT   STOPBRK     ;STOP IF TOGOFLG = 0 ?
00CBFD: 30 09 =CC08 >660           BMI   :CONT       ;IF > $7F THEN DON'T STOP
                    >661  
00CBFF: AD 63 C9    >662           LDA   TOGOFLG     ;TOGO = 0 ?
00CC02: D0 04 =CC08 >663           BNE   :CONT       ;IF NO
00CC04: 68          >664           PLA              
00CC05: 4C 8C CD    >665           JMP   TRACEND     ;STOP & DISPLAY REGISTERS
00CC08: 28          >666  :CONT    PLP              
00CC09: D0 25 =CC30 >667           BNE   TRACEN      ;IMPLIED BRK
                    >668  
                    >669  * DISABLE HARD BREAK SO THE SOFT BREAK IS NOT LOST
                    >670  
00CC0B: AD 39 C8    >671           LDA   IERBUFF    
00CC0E: 8D 0E C9    >672           STA   ETIERSAV   ;SAVE IERBUFF
00CC11: 29 ED       >673           AND   #%11101101 
00CC13: 8D 39 C8    >674           STA   IERBUFF     ;TURN OFF HARD BREAK & BUTTON
00CC16: 20 AE CF    >675           JSR   TRANSFR0   ;REPLACE THE 00 WITH ORIGINAL INSTRUCTION BYTE
00CC19: 5A          >676           DFB   REPLACEC   ;CODE BYTE
                    >677  
00CC1A: AD 3A C8    >678           LDA   ENABLTVC   ;SAVE THE CURRENT ENABLTVC VECTOR
00CC1D: 8D 3C C8    >679           STA   VECTSAVE   
00CC20: AD 3B C8    >680           LDA   ENABLTVC+1 
00CC23: 8D 3D C8    >681           STA   VECTSAVE+1 
                    >682  
00CC26: A9 17       >683           LDA   #BRKTRC     ; --- GO TO BRKTRC AFTER EXECUTING
00CC28: 8D 3A C8    >684           STA   ENABLTVC   ; --- ONE INSTRUCTION
00CC2B: A9 CD       >685           LDA   #>BRKTRC   ; --- 
00CC2D: 8D 3B C8    >686           STA   ENABLTVC+1 ; --- 
                    >687  
                    >688  *-------------------------------------------------
                    >689  * TRACE N INSTRUCTIONS OF THE TARGET PROGRAM
                    >690  
                    >691  TRACEN                    
                    >692  
                    >693  * CHECK REALTIME & PROGRAM ONLY WINDOWS
                    >694  
00CC30: 2C 9F C8    >695           BIT   REALTIME   ;ARE REALTIME RANGES SET ?
00CC33: D0 05 =CC3A >696           BNE   :CHKPWIN   ;IF YES CHECK PROT WINDOW
00CC35: 2C A0 C8    >697           BIT   PROGONLY   ;ARE PROGRAM ONLY RANGES SET ?
00CC38: F0 34 =CC6E >698           BEQ   :NOPR       ;IF NO
                    >699  
                    >700  * IF YES, K/PC MUST BE INSIDE PROGRAM ONLY RANGE TO BE EXECUTED
                    >701  
                    >702  :CHKPWIN                  
00CC3A: A2 1E       >703           LDX   #30        
00CC3C: BD D7 C8    >704  :CHECK   LDA   PROTADR,X  ;GET PROT TYPE
00CC3F: C9 D4       >705           CMP   #"T"        ;CODE TRACE RANGE ?
00CC41: D0 0C =CC4F >706           BNE   :CHKP       ;IF NO
00CC43: 20 AE CF    >707           JSR   TRANSFR0   ;IN RANGE ?
00CC46: 4D          >708           DFB   CHKRANGC   ;code
00CC47: 90 10 =CC59 >709           BCC   :NEXT       ;IF NO
00CC49: 4E FE C8    >710           LSR   COMRTFLG   ;INDICATE FROM PROTWIND
00CC4C: 4C A1 CB    >711           JMP   NMICOMRT   ;IF YES, RUN SUBROUTINE IN REALTIME
00CC4F: C9 D0       >712  :CHKP    CMP   #"P"        ;PROGRAM ONLY RANGE ?
00CC51: D0 06 =CC59 >713           BNE   :NEXT      
00CC53: 20 AE CF    >714           JSR   TRANSFR0   ;IN RANGE ?
00CC56: 4D          >715           DFB   CHKRANGC   ;code
00CC57: B0 15 =CC6E >716           BCS   :NOPR       ;IF YES, CONTINUE TRACE
00CC59: 38          >717  :NEXT    SEC              
00CC5A: 8A          >718           TXA              
00CC5B: E9 06       >719           SBC   #6          ;NEXT TYPE
00CC5D: AA          >720           TAX              
00CC5E: 10 DC =CC3C >721           BPL   :CHECK     
                    >722  
                    >723  * OUT OF RANGES. IF PROG ONLY FLAG IS SET AND WE ARE HERE,
                    >724  * MUST BE OUTSIDE PROG ONLY WINDOW, SO STOP TRACING &
                    >725  * INDICATE OUTSIDE PROG RANGE.
                    >726  
00CC60: 2C A0 C8    >727           BIT   PROGONLY   ;ARE PROGRAM ONLY RANGES SET ?
00CC63: F0 09 =CC6E >728           BEQ   :NOPR       ;IF NO
00CC65: 20 AE CF    >729           JSR   TRANSFR0   ;OUTSIDE PROG RANGE
00CC68: 1C          >730           DFB   OUTPRGRC   ;code
00CC69: 90 03 =CC6E >731           BCC   :NOPR       ;OUR SLOT I/O SPACE IS OK
00CC6B: 4C 96 CD    >732           JMP   COMDDR     
                    >733  
00CC6E: AD 17 C8    >734  :NOPR    LDA   STACK      
00CC71: 8D 02 C9    >735           STA   OLDSTACK   ;SAVE STACK POINTER
00CC74: AD 19 C8    >736           LDA   MSTATE     
00CC77: 8D 03 C9    >737           STA   OLDMSTAT   ;SAVE OLD MSTATE
                    >738  
                    >739  * SET TXSFLG IF THE NEXT INSTRUCTION IS TXS OR TCS
                    >740  
00CC7A: 20 10 CE    >741           JSR   LDAPBRIY   ;GET BYTE AT PBR/PC
00CC7D: 8C FB C8    >742           STY   TXSFLG      ;CLEAR FLAG
00CC80: D0 1C =CC9E >743           BNE   :NOTBRK     ;IF NOT BRK
                    >744  
                    >745  * IS BRK OUR REALTIME BRK ?
                    >746  
00CC82: 2C FF C8    >747           BIT   RTBRKFLG   
00CC85: 10 12 =CC99 >748           BPL   :NOTRT      ;IF NOT REALTIME
00CC87: BA          >749           TSX              ;IS THIS OUR REALTIME BRK
00CC88: EC 00 C9    >750           CPX   RTSTK       ;STACK AT PRE REALTIME LOCAL ?
00CC8B: D0 0C =CC99 >751           BNE   :NOTRT      ;IF NOT, CONTINUE
00CC8D: 20 AE CF    >752           JSR   TRANSFR0   ;RESTORE CHANGED STUFF
00CC90: 4C          >753           DFB   RESTRTC     ;code
00CC91: 10 03 =CC96 >754           BPL   :RTWIND     ;IF RESULT OF RT WINDOW
00CC93: 4C 96 CD    >755           JMP   COMDDR      ;END COMDRT
00CC96: 4C 07 CB    >756  :RTWIND  JMP   SVESCONT   ;CONTINUE WITH WHATEVER
                    >757  
                    >758  * IF INSTRUCTION IS A BRK IT CAN'T BE OURS
                    >759  * SET PC TO BRK VECTOR & CONTINUE
                    >760  
00CC99: A9 80       >761  :NOTRT   LDA   #$80       
00CC9B: 8D A2 C8    >762           STA   TRCBRK      ;INDICATE A BRK WAS TRACED
                    >763  
00CC9E: C9 9A       >764  :NOTBRK  CMP   #$9A        ;IS IT TXS
00CCA0: F0 04 =CCA6 >765           BEQ   :TXS        ;IF YES
00CCA2: C9 1B       >766           CMP   #$1B        ;IS IT TCS
00CCA4: D0 03 =CCA9 >767           BNE   :NOTXS      ;IF NO
00CCA6: EE FB C8    >768  :TXS     INC   TXSFLG      ;SET FLAG
                    >769  
                    >770  * SAVE 16 BYTES FROM ALT STACK AT STACK POINTER DOWN,
                    >771  * TO EXT STKBUF, INCASE STACK ARE SWITCHED BY USER PROGRAM.
                    >772  
00CCA9: 2C 19 C8    >773  :NOTXS   BIT   MSTATE      ;WHICH STACK ARE WE USING NOW
00CCAC: 30 05 =CCB3 >774           BMI   :SAVMNE     ;IF AUX, THEN SAVE MAIN
00CCAE: 8D 09 C0    >775           STA   AUXZP       ;IF MAIN, THEN SAVE AUX
00CCB1: 10 03 =CCB6 >776           BPL   :SAVE       ;<ALWAYS>
00CCB3: 8D 08 C0    >777  :SAVMNE  STA   MAINZP     
00CCB6: AE 17 C8    >778  :SAVE    LDX   STACK       ;USER STACK POINTER
00CCB9: A0 0F       >779           LDY   #15        
00CCBB: BD 00 01    >780  :CONT    LDA   $100,X      ;GET FROM USER STACK
00CCBE: 99 19 C9    >781           STA   STKBUF,Y   ;SAVE IN EXT RAM
00CCC1: CA          >782           DEX              
00CCC2: 88          >783           DEY              
00CCC3: 10 F6 =CCBB >784           BPL   :CONT      
00CCC5: 2C 19 C8    >785           BIT   MSTATE      ;RETURN TO CURRENT STACK
00CCC8: 30 05 =CCCF >786           BMI   :AUX        ;RETURN TO AUX
00CCCA: 8D 08 C0    >787           STA   MAINZP      ;RETURN TO MAIN
00CCCD: 10 03 =CCD2 >788           BPL   :REST      
00CCCF: 8D 09 C0    >789  :AUX     STA   AUXZP       ;RETURN TO AUX
                    >790  
                    >791  * RESTORE 48 BYTES BELOW THE STACK POINTER IN USER STACK
                    >792  
00CCD2: AE 17 C8    >793  :REST    LDX   STACK       ;STACK POINTER
00CCD5: A9 2F       >794           LDA   #47         ;#-1 OF BYTES TO RESTORE
                    >795  
                    >796  ***********************************
                    >797  * RESTORE BYTES BELOW STACK POINTER FROM EXT BUFFER
                    >798  * X = USER STACK POINTER
                    >799  * ACC = # OF BYTES TO RESTORE
                    >800  * IF COME HERE WITH ACC=15 THEN CONTINUE IN SVESTK ROUTINE
                    >801  * THIS ROUTINE CAN NOT BE A SUBROUTINE BECAUSE RETURN ADDR
                    >802  * MIGHT BE OVERWRITTEN.
                    >803  
00CCD7: 48          >804  RESTSTK  PHA              ;SAVE
00CCD8: 8D E1 C9    >805           STA   TEMP        ;SAVE
00CCDB: AC 23 C8    >806           LDY   SLOTN0     
                    >807  **********************************
                    >808  * WARNING, SEGMENT DEPENDENT CODE   
                    >809  **********************************
00CCDE: A9 70       >810           LDA   #%01110000 ;RAM 7, ROM 0
00CCE0: 99 80 C0    >811           STA   SEGMBASE,Y 
                    >812  
00CCE3: 8C 15 C8    >813           STY   YREG        ;SAVE IN RAM7
00CCE6: 68          >814           PLA              ;GET # BYTES TO RESTORE
00CCE7: A8          >815           TAY              
00CCE8: BD 00 C9    >816  :NEXT    LDA   STACKBUF,X ;GET FROM STACK BUFFER
00CCEB: 9D 00 01    >817           STA   $0100,X     ;PUT IN STACK
00CCEE: CA          >818           DEX              
00CCEF: 88          >819           DEY              
00CCF0: 10 F6 =CCE8 >820           BPL   :NEXT      
                    >821  
00CCF2: AC 15 C8    >822           LDY   YREG        ;SLOTN0
                    >823  ***********************************
                    >824  * WARNING, SEGMENT DEPENDENT CODE
                    >825  ***********************************
00CCF5: A9 00       >826           LDA   #%00000000 ;RAM 0, ROM 0
00CCF7: 99 80 C0    >827           STA   SEGMBASE,Y 
00CCFA: AD E1 C9    >828           LDA   TEMP       
00CCFD: C9 0F       >829           CMP   #15         ;DID WE GET HERE FROM SVESTK
00CCFF: D0 03 =CD04 >830           BNE   :CONT       ;IF NO
00CD01: 4C 07 CB    >831           JMP   SVESCONT   ;IF YES
                    >832  
00CD04: A9 C0       >833  :CONT    LDA   #%11000000 
00CD06: 8D 9E C8    >834           STA   TFLAG       ;SET TFLAG
00CD09: 0D 39 C8    >835           ORA   IERBUFF     ;ENABLE TRACE
00CD0C: 8D 39 C8    >836           STA   IERBUFF    
                    >837  
                    >838  **********************************
                    >839  * TWO NUMBERS WILL WORK FOR COUNTER VALUES WHEN IN 8 BIT MODE.
                    >840  * ONLY THE SMALLER OF THE TWO WILL WORK WHEN IN 16 BIT MODE.
                    >841  * MAKE SURE TO USE THE SMALLER NUMBER
                    >842  **********************************
                    >843  
00CD0F: A9 38       >844           LDA   #$38        ;COUNTER VALUE, NMI OCCURS
                    >845                            ; COUNTER+1.5 CLOCK CYCLES AFTER STARTED
00CD11: 8D 04 C8    >846           STA   VIAT1CL     ;LOW ORDER COUNTER LATCH
00CD14: 4C A5 CE    >847           JMP   EXECUTE     ;RESTORE REGISTERS AND RUN PROGRAM.
                    >848  
                    >849  * IF TRACE CAUSES AN NMI THE NMI HANDLER ROUTINE SENDS
                    >850  * THE COMPUTER TO NMITRC.
                    >851  
00CD17: AD 0E C9    >852  BRKTRC   LDA   ETIERSAV   ;GET IERBUFF THAT WAS SAVED
00CD1A: 8D 39 C8    >853           STA   IERBUFF     ;RESTORE
00CD1D: AD 2C C8    >854           LDA   LETTER3     ;ADDRESS WAS PUT IN LETTER 3,2,1
00CD20: 8D 34 C8    >855           STA   PBRADD      ;BY VALIDPC OR DECTGPC
00CD23: AD 2B C8    >856           LDA   LETTER2    
00CD26: 8D 88 C8    >857           STA   HIADD       ;GET ADDRESS OF INSTRUCTION
00CD29: AD 2A C8    >858           LDA   LETTER1    
00CD2C: 8D 87 C8    >859           STA   LOWADD     
00CD2F: A0 00       >860           LDY   #0         
00CD31: 98          >861           TYA              
00CD32: 20 28 CE    >862           JSR   STAINDY     ;PUT BREAK BACK IN
00CD35: EE FD C8    >863           INC   POINT       ;POINT TO OLD BRK INFO
00CD38: EE FC C8    >864           INC   REALBRK     ;REAL BRK COUNT
                    >865  
00CD3B: AD 3C C8    >866           LDA   VECTSAVE   ;RESTORE TRACE VECTOR
00CD3E: 8D 3A C8    >867           STA   ENABLTVC   
00CD41: AD 3D C8    >868           LDA   VECTSAVE+1 
00CD44: 8D 3B C8    >869           STA   ENABLTVC+1 
00CD47: 6C 3A C8    >870           JMP   (ENABLTVC) ;GO TO TRACE VECTOR LOCATION
                    >871  
00CD4A: AD A8 C8    >872  NMITRC   LDA   EFLAG       ;WAS COMMAND EX ?
00CD4D: 30 59 =CDA8 >873           BMI   EXCONT      ;IF YES
                    >874  
00CD4F: 2C A9 C8    >875           BIT   RTSFLAG     ;ARE WE LOOKING FOR AN RTS
00CD52: 10 0A =CD5E >876           BPL   :CHKPAS     ;IF NO
00CD54: 20 16 CE    >877           JSR   LDAPCIY     ;GET INTRUCTION BYTE
00CD57: C9 60       >878           CMP   #$60        ;IS IT AN RTS
00CD59: D0 51 =CDAC >879           BNE   CHKCTRLS   ;IF NO
00CD5B: 4C 96 CD    >880           JMP   COMDDR      ;IF YES STOP LOOKING AND DISPLAY REGISTERS.
                    >881  
                    >882  * DID WE GET HERE FROM THE BREAK HANDLER ?
                    >883  
00CD5E: 2C A5 C8    >884  :CHKPAS  BIT   PASSFLG    
00CD61: 10 08 =CD6B >885           BPL   :CHKTS      ;IF NO
00CD63: A9 00       >886           LDA   #0         
00CD65: 8D A5 C8    >887           STA   PASSFLG    ;RESET
00CD68: 4C A5 CE    >888           JMP   EXECUTE    ;CONTINUE
                    >889  
00CD6B: 2C AB C8    >890  :CHKTS   BIT   TSFLAG      ;IS THIS COMDTS ?
00CD6E: 30 71 =CDE1 >891           BMI   DOSUB       ;IF YES
                    >892  
00CD70: 20 AE CF    >893           JSR   TRANSFR0   ;DISPLAY REG'S FROM RAM & DISASSEM INSTRUCTION
00CD73: 12          >894           DFB   INITDISRC  ;CODE BYTE
                    >895  
                    >896  * DECREMENT TCOUNT
                    >897  
                    >898  SKIPREG                   
00CD74: 38          >899           SEC              
00CD75: AD 9D C8    >900           LDA   TCOUNT+1   ;GET LOW BYTE OF TCOUNT
00CD78: E9 01       >901           SBC   #1          ;DECREMENT BY 1
00CD7A: 8D 9D C8    >902           STA   TCOUNT+1   ;STORE
00CD7D: AD 9C C8    >903           LDA   TCOUNT     
00CD80: E9 00       >904           SBC   #0          ;SUBTRACT CARRY BIT
00CD82: 8D 9C C8    >905           STA   TCOUNT     
00CD85: D0 25 =CDAC >906           BNE   MORETR      ;MORE TRACING
00CD87: AD 9D C8    >907           LDA   TCOUNT+1   
00CD8A: D0 20 =CDAC >908           BNE   MORETR      ;MORE TRACING
00CD8C: 2C A5 C8    >909  TRACEND  BIT   PASSFLG     ;DID WE GET HERE FROM A BRK?
00CD8F: 30 05 =CD96 >910           BMI   COMDDR      ;IF YES
00CD91: 2C A8 C8    >911           BIT   EFLAG       ;ARE WE DOING EXECUTE N INSTRUCTIONS?
00CD94: 10 04 =CD9A >912           BPL   LEAVTRC     ;IF NO
                    >913  
                    >914  **********************************
                    >915  *  COMDDR
                    >916  **********************************
                    >917  
00CD96: 20 AE CF    >918  COMDDR   JSR   TRANSFR0   ;IF YES DISPLAY REGISTERS
00CD99: 12          >919           DFB   INITDISRC  ;CODE BYTE
00CD9A: A9 00       >920  LEAVTRC  LDA   #0         
00CD9C: 8D A8 C8    >921           STA   EFLAG      
00CD9F: 8D A9 C8    >922           STA   RTSFLAG    
00CDA2: 8D A5 C8    >923           STA   PASSFLG    
00CDA5: 4C 9D CF    >924           JMP   MAIN10     ;TRACE FINISHED
                    >925  
00CDA8: C9 B0       >926  EXCONT   CMP   #"0"        ; EXECUTE PROGRAM UNTIL CTRL-X
00CDAA: D0 C8 =CD74 >927           BNE   SKIPREG     ; EX COMMAND SO DON'T DISPLAY REGISTERS
                    >928  MORETR                    
                    >929  
                    >930  *CHECK FOR CTRL-S & esc
                    >931  
                    >932  CHKCTRLS                  
00CDAC: 2C 20 C8    >933           BIT   IOMODE     ;I/O TO SERIAL?
00CDAF: 30 14 =CDC5 >934           BMI   :SERUSED   ;IF YES
00CDB1: AD 00 C0    >935           LDA   KBD        ;READ KEYBOARD
00CDB4: 10 28 =CDDE >936           BPL   TOTRACEN   ;NO KEYPRESSED SO CONTINUE
00CDB6: CD 31 C9    >937           CMP   KEY        ;IS IT STOP COMMAND
00CDB9: D0 23 =CDDE >938           BNE   TOTRACEN   ;NO, CONTINUE
00CDBB: 2C 10 C0    >939           BIT   KBDSTRB    ;YES, CLEAR KBD
00CDBE: AD 00 C0    >940  :WAITKEY LDA   KBD        ;READ KEYBOARD
00CDC1: 10 FB =CDBE >941           BPL   :WAITKEY   ;WAIT FOR KEYPRESS
00CDC3: 30 15 =CDDA >942           BMI   CHKESC     ;KEY PRESSED
                    >943  
                    >944  * USE serial I/O
00CDC5: A9 01       >945  :SERUSED LDA   #$1        ;request code, 'is input ready?'
00CDC7: 20 AE CF    >946           JSR   TRANSFR0   ;get serial I/O status
00CDCA: 6E          >947           DFB   STATPASCC  ;code
00CDCB: 90 11 =CDDE >948           BCC   TOTRACEN   ;no keypress
00CDCD: 20 AE CF    >949           JSR   TRANSFR0   ;get serial data
00CDD0: 66          >950           DFB   INPASCALC  ;code
00CDD1: CD 31 C9    >951           CMP   KEY        ;IS IT stop command?
00CDD4: D0 04 =CDDA >952           BNE   CHKESC     ;IF NO
00CDD6: 20 AE CF    >953  WAITSSC  JSR   TRANSFR0   ;WAIT FOR KEYPRESS
00CDD9: 4F          >954           DFB   RECEIVEC   ;code
                    >955  
                    >956  *WAS IT ESC
                    >957  
                    >958  CHKESC                    
00CDDA: C9 9B       >959           CMP   #ESC       ;IS IT ESC
00CDDC: F0 B8 =CD96 >960           BEQ   COMDDR     ;YES, STOP TRACE
                    >961  TOTRACEN                  
00CDDE: 4C DE CB    >962           JMP   LOOKBRK    ;NO, CONTINUE
                    >963  
                    >964  **** DO THE USERS SUBROUTINE AND STOP IF CARRY IS SET
                    >965  
00CDE1: AE 13 C8    >966  DOSUB    LDX   XREG        ;RESTORE REGISTERS
00CDE4: AC 15 C8    >967           LDY   YREG       
00CDE7: AD 1A C8    >968           LDA   STATUS     
00CDEA: 48          >969           PHA              
00CDEB: AD 11 C8    >970           LDA   ACC        
00CDEE: 28          >971           PLP              ;RESTORE STATUS
00CDEF: 20 FA CD    >972           JSR   USERSUB     ;DO USER SUB
                    >973  
                    >974  * COME HERE AFTER USERS RTS
                    >975  
00CDF2: D8          >976  USERRTS  CLD              ;IN CASE SET BY USER
00CDF3: 90 B7 =CDAC >977           BCC   CHKCTRLS   ;CONTINUE
00CDF5: 4E AB C8    >978           LSR   TSFLAG      ;CLEAR TSFLAG
00CDF8: 10 9C =CD96 >979           BPL   COMDDR      ;<ALWAYS> STOP
                    >980  
00CDFA: 6C 42 C8    >981  USERSUB  JMP   (SUBTRACE) 
                    >982  
                    >983  *-------------------------------------------------
                    >984  * COME HERE WHEN THE HARD BREAK IS REACHED
                    >985  ETVECTOR                  
00CDFD: 20 AE CF    >986           JSR   TRANSFR0   ;CONTINUE IN SEG 2
00CE00: 15          >987           DFB   ETVCONTC   ;code
00CE01: 4C 9D CF    >988           JMP   MAIN10     
                    >989  
                    >990  ********************************
                    >991  *  COMDTS
                    >992  ********************************
                    >993  
            =CE04   >994  COMDTS   EQU   *          
00CE04: 20 AE CF    >995           JSR   TRANSFR0   ;CONTINUE COMMAND IN SEG 4
00CE07: 2D          >996           DFB   TSCONTC     ;code
00CE08: 90 03 =CE0D >997           BCC   :NOERR     
00CE0A: 4C B4 CB    >998           JMP   BADPAR0     ;IF ERROR
00CE0D: 4C DF CB    >999  :NOERR   JMP   LTRACEVC   ;EXECUTE ONE INSTRUCTION IN PROGRAM
                    >1000 
                    >1001 *********************************
                    >1002 *  LOCAL SUBROUTINES
                    >1003 *********************************
                    >1004 
                    >1005 
                    >1006 ***** STAINDY AND LDAINDY MAY NOT BE USED TO CHANGE
                    >1007 ***** DISPLAY OR OTHER SOFT SWITCHES.
                    >1008 
                    >1009 LDAPBRIY                  ;LOAD BYTE AT PBR/PC
00CE10: AD 1D C8    >1010          LDA   PBR        
00CE13: 8D 34 C8    >1011          STA   PBRADD     
00CE16: AD 1B C8    >1012 LDAPCIY  LDA   PCLO        ;LOAD BYTE AT PC
00CE19: 8D 87 C8    >1013          STA   LOWADD     
00CE1C: AD 1C C8    >1014          LDA   PCHI       
00CE1F: 8D 88 C8    >1015          STA   HIADD      
00CE22: A0 00       >1016          LDY   #0         
                    >1017 
                    >1018 * LDA LOWADD,Y FROM CARD I/O SPACE
                    >1019 
00CE24: A9 B9       >1020 LDAINDY  LDA   #$B9        ;LDA OP,Y OPCODE
00CE26: D0 05 =CE2D >1021          BNE   CARDSLT1   ;<ALWAYS>
                    >1022 
                    >1023 * STA LOWADD,Y FROM CARD I/O SPACE
                    >1024 
00CE28: 8D 26 C8    >1025 STAINDY  STA   ZBYTE1      ;SAVE
00CE2B: A9 99       >1026          LDA   #$99        ;STA OP,Y OPCODE
                    >1027 CARDSLT1                  
00CE2D: 8E 27 C8    >1028          STX   ZBYTE2      ;SAVE X
00CE30: 8C 28 C8    >1029          STY   ZBYTE3      ;SAVE Y
00CE33: 8D 86 C8    >1030          STA   CXOKLOAD+3+$800 ;PUT IN I/O SPACE ROUTINE
                    >1031 
                    >1032 * EXCHANGE ZERO PAGE LOCATIONS IF ACCESS WAS TO ZERO PAGE
00CE36: AD 88 C8    >1033          LDA   HIADD      
00CE39: D0 03 =CE3E >1034          BNE   :NOTZPAG   ;IF NOT ZERO PAGE
00CE3B: 20 12 CF    >1035          JSR   EXCHZPAG   
                    >1036 :NOTZPAG                  
                    >1037 
00CE3E: AD 18 C0    >1038          LDA   STORE80     ;READ CURRENT 80S STATUS
00CE41: 8D 17 C9    >1039          STA   INDY80S     ;SAVE IN BUFFER
00CE44: 8D 00 C0    >1040          STA   STR80OFF   ;80 STORE OFF
00CE47: AD 16 C0    >1041          LDA   ALTZP      
00CE4A: 8D 18 C9    >1042          STA   INDYBUF     ;SAVE ALTZP FLAG
                    >1043 
00CE4D: AE 34 C8    >1044          LDX   PBRADD      ;WHICH BANK
00CE50: F0 10 =CE62 >1045          BEQ   :BANK0      ;IF BANK0
                    >1046 
                    >1047 * SET BANK OTHER THAN 0
00CE52: 8E 03 C0    >1048          STX   READAUX    
00CE55: 8E 05 C0    >1049          STX   WRITAUX    
00CE58: 8E 09 C0    >1050          STX   AUXZP      
00CE5B: CA          >1051          DEX              ;EXT DISPLAYS RAMWORKS BANK 0 AS BANK 1 etc.
00CE5C: 8E 73 C0    >1052          STX   $C073       ;SELECT RAMWORKS BANK
00CE5F: 4C 6B CE    >1053          JMP   :TOIO      
                    >1054 
                    >1055 * SET BANK0
00CE62: 8D 02 C0    >1056 :BANK0   STA   READMAIN   
00CE65: 8D 04 C0    >1057          STA   WRITMAIN   
                    >1058 * comes here on bad bank to force main stack
00CE68: 8D 08 C0    >1059 :BADBANK STA   MAINZP     
                    >1060 
                    >1061 * SAVE 6 BYTES OF THE NEW STACKS RAM
00CE6B: BA          >1062 :TOIO    TSX              
00CE6C: A0 05       >1063          LDY   #5         
00CE6E: BD 00 01    >1064 :SAVE    LDA   $100,X     
00CE71: 99 19 C9    >1065          STA   STKBUF,Y   
00CE74: CA          >1066          DEX              
00CE75: 88          >1067          DEY              
00CE76: 10 F6 =CE6E >1068          BPL   :SAVE      
00CE78: AE 27 C8    >1069          LDX   ZBYTE2      ;RESTORE
00CE7B: AC 28 C8    >1070          LDY   ZBYTE3     
                    >1071 
                    >1072 ******************************
                    >1073 * ALERT! No stack exists if illegal Ramworks bank is used.
                    >1074 * If stack RAM is bad then force command to LDAPBRIY.
                    >1075 ******************************
                    >1076 
                    >1077 * check for good stack RAM
                    >1078 
00CE7E: A9 00       >1079          LDA   #0         
00CE80: 48          >1080          PHA              ;PUT A ZERO ON THE STACK
00CE81: 68          >1081          PLA              ;READ IT BACK?
00CE82: D0 E4 =CE68 >1082          BNE   :BADBANK    ;IF IT DIDN'T READ BACK
00CE84: A9 55       >1083          LDA   #$55        ;PUT A $55 ON THE STACK
00CE86: 48          >1084          PHA              ;
00CE87: 68          >1085          PLA              ;READ IT BACK?
00CE88: C9 55       >1086          CMP   #$55       
00CE8A: D0 DC =CE68 >1087          BNE   :BADBANK    ;if it didn't read back
                    >1088 
                    >1089 * RETURN TO SLOTRTS
                    >1090 
00CE8C: AD 30 C9    >1091          LDA   SLOTCN     
00CE8F: 48          >1092          PHA              
00CE90: A9 5E       >1093          LDA   #SLOTRTS   
00CE92: 48          >1094          PHA              
                    >1095 
00CE93: A9 C1       >1096          LDA   #SLOTIO     ;LOW ADD BYTE OF SLOT ROUTINE
                    >1097 
                    >1098 CARDSLOT                  
00CE95: 8D 27 C8    >1099          STA   ZBYTE2      ;SAVE ACC
00CE98: AD 30 C9    >1100          LDA   SLOTCN     
00CE9B: 48          >1101          PHA              
00CE9C: AD 27 C8    >1102          LDA   ZBYTE2      ;LOW ADDRESS BYTE OF ROUTINE IN SLOT SPACE.
00CE9F: 48          >1103          PHA              ;SET UP STACK
00CEA0: 60          >1104          RTS              ;GO TO ROUTINE IN CARD SLOT SPACE.
                    >1105 
                    >1106 
                    >1107 ****************************************
                    >1108 ** EXECUTE THE USERS PROGRAM FROM THE CARD SLOT SPACE
                    >1109 
                    >1110 EXECMOVE                  
00CEA1: 85          >1111          DFB   #TOEXECUT  
00CEA2: 28          >1112          PLP              ;THESE THREE BYTES ARE MOVED 
00CEA3: 08          >1113          PHP              ;TO THE I/O SPACE ROUTINE
00CEA4: 40          >1114          RTI              ;
                    >1115 
                    >1116 ***********************************
                    >1117 *  EXECUTE
                    >1118 
                    >1119 EXECUTE                   
                    >1120 
                    >1121 * RESTORE THE TEXT PAGE
                    >1122 
00CEA5: 20 AE CF    >1123          JSR   TRANSFR0   
00CEA8: 16          >1124          DFB   RESTTEXTC  ;code
                    >1125 
                    >1126 * SETUP FOR EXECUTE
                    >1127 
00CEA9: A2 03       >1128          LDX   #3         
00CEAB: AD 11 C8    >1129          LDA   ACC        
00CEAE: 8D 26 C8    >1130          STA   ZBYTE1      ;EXPECTED BY SLOTIO
00CEB1: BD A1 CE    >1131 EXSETUP  LDA   EXECMOVE,X ;SETUP I/O SPACE ROUTINE
00CEB4: CA          >1132          DEX              
00CEB5: 30 DE =CE95 >1133          BMI   CARDSLOT   
00CEB7: 9D 86 C8    >1134          STA   CXOKLOAD+3+$800,X ;PUT IN I/O SPACE ROUTINE
00CEBA: 10 F5 =CEB1 >1135          BPL   EXSETUP     ;<ALWAYS>
                    >1136 
                    >1137 ***********************************
                    >1138 * SAVE REGISTERS
                    >1139 
00CEBC: 8D 11 C8    >1140 SAVEREG  STA   ACC         ;SAVE ACC TO ONBOARD RAM
00CEBF: 08          >1141          PHP              
00CEC0: 68          >1142          PLA              ;GET STATUS
00CEC1: 8D 1A C8    >1143 SAVXYSP  STA   STATUS     
00CEC4: 8E 13 C8    >1144          STX   XREG       
00CEC7: 8C 15 C8    >1145          STY   YREG       
00CECA: BA          >1146          TSX              
00CECB: E8          >1147          INX              
00CECC: E8          >1148          INX              ;MAKE UP FOR JSR
00CECD: 8E 17 C8    >1149          STX   STACK      
                    >1150 
                    >1151 **** SAVE RAMRD AND RAMWRT SWITCHES ****
                    >1152 
00CED0: AD 13 C0    >1153          LDA   RAMRD       ;AUX OR MAIN READ
00CED3: 8D 29 C9    >1154          STA   RAMRDBF    
00CED6: AD 14 C0    >1155          LDA   RAMWRT      ;AUX OR MAIN WRITE
00CED9: 8D 2A C9    >1156          STA   RAMWRTBF   
00CEDC: 60          >1157          RTS              
                    >1158 
                    >1159 *** CONTINUATION OF SLOTRTS ONLY!  ***
                    >1160 *** SAVES ZERO PAGE LOCATIONS TO DDT RAM *** 
                    >1161 * RESTORE MEMORY STATE SWITCHES
                    >1162 
00CEDD: 8D 04 C0    >1163 RTSCONT  STA   WRITMAIN   ;DEFAULT TO MAIN
00CEE0: 2C 2A C9    >1164          BIT   RAMWRTBF   ;USERS STATE, NOT EXT II STATE
00CEE3: 10 03 =CEE8 >1165          BPL   :CKREAD     ;IF MAIN
00CEE5: 8D 05 C0    >1166          STA   WRITAUX     ;NO, WRITE TO AUX
00CEE8: 8D 02 C0    >1167 :CKREAD  STA   READMAIN   
00CEEB: 2C 29 C9    >1168          BIT   RAMRDBF     ;USERS STATE
00CEEE: 10 03 =CEF3 >1169          BPL   :STR80      ;IF MAIN
00CEF0: 8D 03 C0    >1170          STA   READAUX     ;NO, READ FROM AUX
00CEF3: AD 17 C9    >1171 :STR80   LDA   INDY80S     ;GET SAVED 80S STATUS
00CEF6: 10 03 =CEFB >1172          BPL   :OFF        ;KEEP 80 STORE OFF
00CEF8: 8D 01 C0    >1173          STA   STR80ON     ;TURN BACK ON
00CEFB: A9 00       >1174 :OFF     LDA   #0         
00CEFD: 8D 73 C0    >1175          STA   $C073       ;SELECT RAMWORKS BANK 0
                    >1176 
                    >1177 * EXCHANGE ZERO PAGE LOCATIONS IF ACCESS WAS TO ZERO PAGE
00CF00: AD 88 C8    >1178          LDA   HIADD      
00CF03: D0 03 =CF08 >1179          BNE   :NOTZPAG   ;IF NOT ZERO PAGE
00CF05: 20 12 CF    >1180          JSR   EXCHZPAG   
                    >1181 :NOTZPAG                  
                    >1182 
00CF08: AE 27 C8    >1183          LDX   ZBYTE2     
00CF0B: AC 28 C8    >1184          LDY   ZBYTE3     
00CF0E: AD 26 C8    >1185          LDA   ZBYTE1      ;RESTORE
00CF11: 60          >1186          RTS              
                    >1187 
                    >1188 *EXCHANGE ZERO PAGE IF ACCESS IS TO ZERO PAGE
                    >1189 
                    >1190 EXCHZPAG                  
00CF12: A2 03       >1191          LDX   #3          ;4 BYTES
00CF14: BD 51 C9    >1192 :NEXT    LDA   BASBUF,X   ;GET FROM DDT BUFFER
00CF17: B4 28       >1193          LDY   BASL,X      ;GET FROM APPLE'S RAM
00CF19: 95 28       >1194          STA   BASL,X      ;PUT IN APPLE'S RAM
00CF1B: 98          >1195          TYA              
00CF1C: 9D 51 C9    >1196          STA   BASBUF,X   ;PUT IN DDT BUFFER
00CF1F: CA          >1197          DEX              
00CF20: 10 F2 =CF14 >1198          BPL   :NEXT      
00CF22: 60          >1199          RTS              
                    >1200 
                    >1201 * ENABWRIT.
                    >1202 
                    >1203 ENABWRIT                  
00CF23: A9 7F       >1204          LDA   #%01111111 ;DISABLE ALL INTERRUPTS
00CF25: 8D 0E C8    >1205          STA   VIAIER      ;ALSO CLEARS BIT 7 OF VIAIFR
                    >1206 ENABINIT                  
00CF28: AD 0C C8    >1207          LDA   VIAPCR      ;ENTER HERE TO PUT /INIT LOW
00CF2B: 09 EE       >1208          ORA   #%11101110 ;REMOVE INVISIBILITY (CA2 HI) &
                    >1209                           ; DON'T REPLACE APPLE'S VECTORS (CB2 HI)
00CF2D: 8D 0C C8    >1210          STA   VIAPCR     
00CF30: 60          >1211          RTS              
                    >1212 
                    >1213 * INDEXTO8 SAVE 16 BIT INDEXES AND SET TO 8 BIT.
                    >1214 
                    >1215 INDEXTO8                  
00CF31: 48          >1216          PHA              ;SAVE ACC 1 BYTE
00CF32: 20 28 CF    >1217          JSR   ENABINIT   ;ALOW WRITING TO EXTRAM
00CF35: 8E 13 C8    >1218          STX   XREG        ;SAVE 1 OR 2 BYTES
00CF38: 8C 15 C8    >1219          STY   YREG        ; " " "
00CF3B: A9 34       >1220          LDA   #$34       
00CF3D: 48          >1221          PHA              
00CF3E: 28          >1222          PLP              ;KEEP 8 BIT DATA, SET 8 BIT INDEXES
                    >1223 
                    >1224 * STZ EMULATE
00CF3F: 9C 2E C9    >1225          STZ   EMULATE     ;0 = 65816 MODE
00CF42: 68          >1226          PLA              ;GET ACC
00CF43: 8D 11 C8    >1227          STA   ACC        
00CF46: 60          >1228          RTS              
                    >1229 
                    >1230 ******** SAVE THE ACC,X AND P REGISTERS *******
                    >1231 
                    >1232 SAVEAXP0                  
00CF47: 08          >1233          PHP              ;SAVE STATUS
00CF48: 8E 05 C9    >1234          STX   XSAVESEG   
00CF4B: 8D 04 C9    >1235          STA   ASAVESEG   
00CF4E: 68          >1236          PLA              ;GET STATUS
00CF4F: 8D 06 C9    >1237          STA   PSAVESEG   ;SAVE
00CF52: 60          >1238          RTS              
                    >1239 
                    >1240 ****** RESTORE THE ACC, X AND P REGISTERS ******
                    >1241 
                    >1242 RESTAXP0                  
00CF53: AE 05 C9    >1243          LDX   XSAVESEG   
00CF56: AD 06 C9    >1244          LDA   PSAVESEG   
00CF59: 48          >1245          PHA              
00CF5A: AD 04 C9    >1246          LDA   ASAVESEG   
00CF5D: 28          >1247          PLP              
00CF5E: 60          >1248          RTS              
                    >1249 
                    >1250 ***** GLOBAL SUBROUTINES IN THIS SEGMENT *****
                    >1251 ***** MAXIMUM OF 32 *****
                    >1252 ***** CODE BYTES ARE EQUATED AS FOLLOWS
                    >1253 *
                    >1254 * BITS 0-2 = SEGMENT NUMBER $0 THRU $7 OF SUBROUTINE
                    >1255 * BITS 3-7 = NUMBER OF SUBROUTINE IN SUBTABL
                    >1256 
                    >1257 SUBTABL0                  
                    >1258 
            =0100   >1259 LDAINDYC EQU   *-SUBTABL0*4+0+$100 
00CF5F: 23 CE       >1260          DA    LDAINDY-1  
                    >1261 
            =0108   >1262 STAINDYC EQU   *-SUBTABL0*4+0+$100 
00CF61: 27 CE       >1263          DA    STAINDY-1  
                    >1264 
            =0110   >1265 TRACE1C  EQU   *-SUBTABL0*4+0+$100 
00CF63: D1 CB       >1266          DA    TRACE1-1   
                    >1267 
            =0118   >1268 STEP1C   EQU   *-SUBTABL0*4+0+$100 
00CF65: EA CB       >1269          DA    STEP1-1    
                    >1270 
            =0120   >1271 EXECUTEC EQU   *-SUBTABL0*4+0+$100 
00CF67: A4 CE       >1272          DA    EXECUTE-1  
                    >1273 
                    >1274 ************* SEGMENT CROSSOVER AREA *************
                    >1275 
            =0034   >1277 S0END    =     $CF9D-*    
                    >1278          do    nolist     
                    >1279          LST   OFF        
                    >1280          fin              
                    >1281          ERR   *-1/$CF9D  
00CF69: FF FF FF FF >1282          DS    $CF9D-*,$FF 
                    >1283 
                    >1284 *** GOTO GETCOMD in segment 5 ***
                    >1285 
00CF9D: 20 47 CF    >1286 MAIN10   JSR   SAVEAXP0   ;COME HERE TO TRANSFER TO SEGMENT5 DIRECTLY
00CFA0: AE 23 C8    >1287          LDX   SLOTN0     
00CFA3: A9 05       >1288          LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >1289          STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 53 CF    >1290          JSR   RESTAXP0   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >1291          RTS              ;GOTO TO COMMAND IN THIS SEGMENT
00CFAC: EA          >1292          NOP              
00CFAD: EA          >1293          NOP              ;MATCH LENGTH WITH SEGMENT 5
                    >1294 
                    >1295 * TRANSFER TO OTHER SEGMENTS
                    >1296 
                    >1297 TRANSFR0                  
                    >1298 
00CFAE: 20 47 CF    >1299          JSR   SAVEAXP0   
00CFB1: 68          >1300          PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >1301          CLC              
00CFB3: 69 01       >1302          ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >1303          STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >1304          PLA              
00CFB9: 69 00       >1305          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1306          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1307          PHA              
00CFBF: AD DE C9    >1308          LDA   TEMPSEG    
00CFC2: 48          >1309          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 00       >1310          LDA   #0          ;CURRENT SEG #
00CFC5: 48          >1311          PHA              
00CFC6: 20 DD C9    >1312          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1313          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1314          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1315          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1316          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1317 * NEW SEGMENT
00CFD4: A9 CF       >1318          LDA   #>RETURN0  ;WHERE TO RETURN TO
00CFD6: 48          >1319          PHA              
00CFD7: A9 ED       >1320          LDA   #RETURN0   
00CFD9: 48          >1321          PHA              
00CFDA: AD 44 C8    >1322          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1323          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1324          LSR              
00CFE0: 4A          >1325          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1326 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1327          TAX              
00CFE2: BD 60 CF    >1328          LDA   SUBTABL0+1,X ;HI BYTE FIRST
00CFE5: 48          >1329          PHA              
00CFE6: BD 5F CF    >1330          LDA   SUBTABL0,X 
00CFE9: 48          >1331          PHA              
                    >1332 
00CFEA: 20 53 CF    >1333          JSR   RESTAXP0   ;RESTORE REGISTERS
00CFED: 60          >1334          RTS              ;USE RTS TO GOTO SUB
                    >1335 
                    >1336 * RETURN HERE FROM SUBROUTINE
                    >1337 
            =CFED   >1338 RETURN0  EQU   *-1        
00CFEE: 20 47 CF    >1339          JSR   SAVEAXP0   
00CFF1: 68          >1340          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1341          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1342          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 53 CF    >1343          JSR   RESTAXP0   
                    >1344 
                    >1345 *** THIS RTS IS USED BY THE FINDSLOT ROUTINE ***
00CFFB: 60          >1346 PUTSLOT  RTS              ;RETURN TO CALLING PROGRAM
                    >1347 
00CFFC: FF FF FF FF >1348          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     22            PUT   SEG1       
                    >2    **********************************
                    >3    *  SEGONEFONE
                    >4    **********************************
                    >5    
                    >6             ORG   $C800       ;RUNS FROM $C800
                    >7    
                    >8    *************** MESSAGES *************
                    >9    
                    >10   MSGINVBP                  
00C800: 8D          >11            DFB   CR         
00C801: C9 CE D6 C1 >12            ASC   "INVALID ADDRESS" 
00C810: 87 8D 84    >13            DFB   BEL,CR,EOT 
                    >14   
                    >15   * MESSAGE "BREAK"
                    >16   
                    >17   MSGBRKPT                  
00C813: 8D          >18            DFB   CR         
00C814: C2 D2 C5 C1 >19            ASC   "BREAKS"   
00C81A: 8D 84       >20            DFB   CR,EOT     
                    >21   
                    >22   MSGHARDB                  
00C81C: 8D          >23            DFB   CR         
00C81D: C8 C1 D2 C4 >24            ASC   "HARDWARE BREAK" 
00C82B: 8D 84       >25            DFB   CR,EOT     
                    >26   
                    >27   MSGAVAIL                  
00C82D: CD A0 EF F2 >28            ASC   "M or ?"   
00C833: 05          >29            DFB   05         
00C834: CD E5 EE F5 >30            ASC   "Menu"     
00C838: 18          >31            DFB   24         
00C839: CD C4 A0 DB >32            ASC   "MD [A]"   
00C83F: 05          >33            DFB   05         
00C840: CD E5 ED A0 >34            ASC   "Mem Dump" 
00C848: 8D          >35            DFB   CR         
                    >36   
00C849: CD CF       >37            ASC   "MO"       
00C84B: 09          >38            DFB   09         
00C84C: CD EF E4 E5 >39            ASC   "Mode"     
00C850: 18          >40            DFB   24         
00C851: CD D7       >41            ASC   "MW"       
00C853: 09          >42            DFB   09         
00C854: CD E5 ED A0 >43            ASC   "Mem Wind" 
00C85C: 8D          >44            DFB   CR         
                    >45   
00C85D: E5 F3 E3    >46            ASC   "esc"      
00C860: 08          >47            DFB   8          
00C861: BA A0 EC E5 >48            ASC   ": level"  
00C868: 15          >49            DFB   21         
00C869: CD CD A0 DB >50            ASC   "MM [A]"   
00C86F: 05          >51            DFB   05         
00C870: CD E5 ED A0 >52            ASC   "Mem Mod"  
00C877: 8D          >53            DFB   CR         
                    >54   
00C878: D3 D3 A0 C1 >55            ASC   "SS A"     
00C87C: 07          >56            DFB   07         
00C87D: D3 E5 F4 A0 >57            ASC   "Set Switch" 
00C887: 12          >58            DFB   18         
00C888: CD C1 A0 DB >59            ASC   "MA [A]"   
00C88E: 05          >60            DFB   05         
00C88F: CD E9 EE E9 >61            ASC   "Mini Assem" 
00C899: 8D          >62            DFB   CR         
                    >63   
00C89A: D3 C4 A0 D4 >64            ASC   "SD T"     
00C89E: 07          >65            DFB   07         
00C89F: D3 E5 F4 A0 >66            ASC   "Set Disp" 
00C8A7: 14          >67            DFB   20         
00C8A8: D0 D7       >68            ASC   "PW"       
00C8AA: 09          >69            DFB   09         
00C8AB: D0 F2 EF F4 >70            ASC   "Prot Wind" 
00C8B4: 8D          >71            DFB   CR         
                    >72   
00C8B5: CF CE       >73            ASC   "ON"       
00C8B7: 26          >74            DFB   38         
00C8B8: D2 D4       >75            ASC   "RT"       
00C8BA: 09          >76            DFB   09         
00C8BB: D2 E5 E1 EC >77            ASC   "Real Time" 
00C8C4: 8D          >78            DFB   CR         
                    >79   
00C8C5: CF C6 E6    >80            ASC   "OFf"      
00C8C8: 25          >81            DFB   37         
00C8C9: E4 EF F7 EE >82            ASC   "down"     
00C8CD: 07          >83            DFB   07         
00C8CE: D3 EB E9 F0 >84            ASC   "Skip"     
00C8D2: 8D          >85            DFB   CR         
00C8D3: 84          >86            DFB   EOT        
                    >87   
                    >88   MSGAVAL2                  
                    >89   
00C8D4: CB C5 F9    >90            ASC   "KEy"      
00C8D7: 08          >91            DFB   08         
00C8D8: D3 E5 F4    >92            ASC   "Set"      
00C8DB: 19          >93            DFB   25         
00C8DC: D4 D2 A0 DB >94            ASC   "TR [N]"   
00C8E2: 05          >95            DFB   05         
00C8E3: D4 F2 E1 E3 >96            ASC   "Trace"    
00C8E8: 8D          >97            DFB   CR         
                    >98   
00C8E9: D3 C2 A0 DB >99            ASC   "SB [T A.N]" 
00C8F3: 01          >100           DFB   01         
00C8F4: D3 E5 F4 A0 >101           ASC   "Set BRK"  
00C8FB: 15          >102           DFB   21         
00C8FC: D4 D3 A0 C1 >103           ASC   "TS A"     
00C900: 07          >104           DFB   07         
00C901: D4 F2 E1 E3 >105           ASC   "Trace w/Sub" 
00C90C: 8D          >106           DFB   CR         
                    >107  
00C90D: D2 C2 A0 C1 >108           ASC   "RB A"     
00C911: 07          >109           DFB   07         
00C912: D2 E5 ED EF >110           ASC   "Remove BRK" 
00C91C: 12          >111           DFB   18         
00C91D: C5 D8 A0 DB >112           ASC   "EX [N]"   
00C923: 05          >113           DFB   05         
00C924: C5 F8 E5 E3 >114           ASC   "Execute"  
00C92B: 8D          >115           DFB   CR         
                    >116  
00C92C: C8 C2 A0 DB >117           ASC   "HB [A]"   
00C932: 05          >118           DFB   05         
00C933: C8 E1 F2 E4 >119           ASC   "Hard BRK" 
00C93B: 14          >120           DFB   20         
00C93C: C5 D2       >121           ASC   "ER"       
00C93E: 09          >122           DFB   09         
00C93F: C5 D8 A0 F4 >123           ASC   "EX to RTS" 
00C948: 8D          >124           DFB   CR         
                    >125  
00C949: D2 C8       >126           ASC   "RH"       
00C94B: 09          >127           DFB   09         
00C94C: D2 E5 ED EF >128           ASC   "Remove HB" 
00C955: 13          >129           DFB   19         
00C956: C5 D4 A0 C1 >130           ASC   "ET A.A"   
00C95C: 05          >131           DFB   05         
00C95D: C5 D8 A0 D4 >132           ASC   "EX Time"  
00C964: 8D          >133           DFB   CR         
                    >134  
00C965: D2 C1       >135           ASC   "RA"       
00C967: 09          >136           DFB   09         
00C968: D2 E5 ED EF >137           ASC   "Remove All" 
00C972: 12          >138           DFB   18         
00C973: C7 CF A0 DB >139           ASC   "GO [A]"   
00C979: 05          >140           DFB   05         
00C97A: D2 F5 EE    >141           ASC   "Run"      
00C97D: 8D          >142           DFB   CR         
                    >143  
00C97E: CC E9 A0 DB >144           ASC   "Li [A]"   
00C984: 05          >145           DFB   05         
00C985: CC E9 F3 F4 >146           ASC   "List"     
00C989: 18          >147           DFB   24         
00C98A: CA D3 A0 C1 >148           ASC   "JS A"     
00C98E: 07          >149           DFB   07         
00C98F: CA D3 D2 A0 >150           ASC   "JSR A"    
00C994: 8D          >151           DFB   CR         
                    >152  
00C995: C4 D2       >153           ASC   "DR"       
00C997: 09          >154           DFB   09         
00C998: C4 E9 F3 F0 >155           ASC   "Disp Reg's" 
00C9A2: 12          >156           DFB   18         
00C9A3: AA          >157           ASC   "*"        
00C9A4: 0A          >158           DFB   10         
00C9A5: CD EF EE    >159           ASC   "Mon"      
00C9A8: 8D          >160           DFB   CR         
                    >161  
00C9A9: D2 BD EE    >162           ASC   "R=n"      
00C9AC: 08          >163           DFB   08         
00C9AD: D2 C5 C7 BD >164           ASC   "REG=n"    
00C9B2: 17          >165           DFB   23         
00C9B3: D1 D5 E9 F4 >166           ASC   "QUit"     
00C9B7: 8D          >167           DFB   CR         
00C9B8: 84          >168           DFB   EOT        
                    >169  
                    >170  * MSGFLAGS
                    >171  
                    >172  MSGFLAGS                  
00C9B9: 8D          >173           DFB   CR         
00C9BA: C6 CC C1 C7 >174           ASC   "FLAGS  NV1BDIZC" 
00C9C9: 8D          >175           DFB   CR         
00C9CA: D3 D4 C1 D4 >176           ASC   "STATUS "  
00C9D1: 84          >177           DFB   EOT        
                    >178  
                    >179  * MSGENTER
                    >180  
                    >181  MSGENTER                  
00C9D2: 8D          >182           DFB   CR         
00C9D3: C5 EE F4 E5 >183           ASC   "Enter "   
00C9D9: 84          >184           DFB   EOT        
                    >185  
00C9DA: 8D          >186  MSGREAL  DFB   CR         
00C9DB: D2 E5 E1 EC >187           ASC   "Real BRKs in" 
00C9E7: 87          >188           DFB   BEL        
00C9E8: 84          >189           DFB   EOT        
                    >190  
                    >191  *********************************************
                    >192  *  MAKE SURE THIS POINT IS $CA00 OR HIGHER  *
                    >193  *********************************************
                    >194  
00C9E9: FF FF FF FF >195           DS    $CA00-*,$FF 
                    >196  
                    >197  * COME HERE FROM LOWER 2K
                    >198  * MAKE SURE THAT THE INSTRUCTIONS DO NOT BEGIN UNTIL $CA00.
                    >199  
                    >200  ********************************
                    >201  *  COMDDOTP
                    >202  ********************************
                    >203  
                    >204  COMDDOTP                  
00CA00: F0 0B =CA0D >205           BEQ   COMDPP      ;COMMAND IS .P
                    >206  * COMMAND IS .P WITH NUMBER
00CA02: 20 FF CC    >207           JSR   CHKREAD     ;CHECK FOR HEX AND READ
00CA05: B0 06 =CA0D >208           BCS   COMDPP      ;IF NOT HEX
00CA07: 8D 1A C8    >209           STA   STATUS      ;CHANGE STATUS
                    >210  PPMAIN10                  
00CA0A: 4C 9D CF    >211           JMP   MAIN11     
                    >212  
                    >213  * COMMAND IS .P WITH NO NUMBER, CHANGE INDIVIDUAL FLAGS,
                    >214  * DISPLAY THE FLAGS
                    >215  
00CA0D: 20 B8 CD    >216  COMDPP   JSR   WRINIT1    
00CA10: B9 B9 C9    >217  :MORE    LDA   MSGFLAGS,Y ;GET CHAR
00CA13: 20 C2 CD    >218           JSR   WRITECK1   ;DISPLAY
00CA16: 90 F8 =CA10 >219           BCC   :MORE      
                    >220  
00CA18: A2 08       >221           LDX   #8         
00CA1A: AD 1A C8    >222           LDA   STATUS     
                    >223  
                    >224  *DISPLAY THE CURRENT STATUS
                    >225  
                    >226  DISPSTAT                  
00CA1D: 0A          >227           ASL              
00CA1E: 48          >228           PHA              
00CA1F: B0 04 =CA25 >229           BCS   FLAGON     
00CA21: A9 B0       >230           LDA   #"0"       
00CA23: D0 02 =CA27 >231           BNE   DISPIOR0   
00CA25: A9 B1       >232  FLAGON   LDA   #"1"       
                    >233  DISPIOR0                  
00CA27: 20 AE CF    >234           JSR   TRANSFR1   
00CA2A: 07          >235           DFB   COUTC       ;CODE
00CA2B: 68          >236           PLA              
00CA2C: CA          >237           DEX              
00CA2D: D0 EE =CA1D >238           BNE   DISPSTAT   
                    >239  
                    >240  * DISPLAY "ENTER"
                    >241  
00CA2F: 20 B8 CD    >242           JSR   WRINIT1    
00CA32: B9 D2 C9    >243  :MORE    LDA   MSGENTER,Y ;GET CHAR
00CA35: 20 C2 CD    >244           JSR   WRITECK1   ;DISPLAY
00CA38: 90 F8 =CA32 >245           BCC   :MORE      
                    >246  
00CA3A: A9 A0       >247           LDA   #$A0       
00CA3C: 8D 32 C9    >248           STA   PROMPT     
00CA3F: 20 AE CF    >249           JSR   TRANSFR1   ;GET INPUT NO CR
00CA42: 57          >250           DFB   GETLNC      ;CODE
00CA43: A0 00       >251           LDY   #00         ;8 BITS + 1
                    >252  
                    >253  * RECOGNIZES ONLY 0 AND 1, EVERYTHING ELSE IS TREATED AS SPACE
                    >254  
                    >255  NEXTFLAG                  
00CA45: BE 33 C9    >256           LDX   IN,Y       
00CA48: C8          >257           INY              
00CA49: C0 09       >258           CPY   #9         
00CA4B: B0 BD =CA0A >259           BGE   PPMAIN10   
00CA4D: E0 B1       >260           CPX   #"1"       
00CA4F: D0 12 =CA63 >261           BNE   CHKZERO     ;IF NOT 1
00CA51: 98          >262           TYA              
00CA52: AA          >263           TAX              
00CA53: A9 00       >264           LDA   #0         
00CA55: 38          >265           SEC              
00CA56: 6A          >266  MOVEONE  ROR              
00CA57: CA          >267           DEX              
00CA58: D0 FC =CA56 >268           BNE   MOVEONE    
00CA5A: 0D 1A C8    >269           ORA   STATUS     
                    >270  SAVESTAT                  
00CA5D: 8D 1A C8    >271           STA   STATUS     
00CA60: 4C 45 CA    >272           JMP   NEXTFLAG   
00CA63: E0 B0       >273  CHKZERO  CPX   #"0"       
00CA65: D0 0F =CA76 >274           BNE   CHKRETRN   
00CA67: 98          >275           TYA              
00CA68: AA          >276           TAX              
00CA69: A9 FF       >277           LDA   #$FF       
00CA6B: 18          >278           CLC              
                    >279  MOVEZERO                  
00CA6C: 6A          >280           ROR              
00CA6D: CA          >281           DEX              
00CA6E: D0 FC =CA6C >282           BNE   MOVEZERO   
00CA70: 2D 1A C8    >283           AND   STATUS     
00CA73: 4C 5D CA    >284           JMP   SAVESTAT   
                    >285  CHKRETRN                  
00CA76: E0 8D       >286           CPX   #CR        
00CA78: F0 90 =CA0A >287           BEQ   PPMAIN10   
00CA7A: D0 C9 =CA45 >288           BNE   NEXTFLAG   
                    >289  
                    >290  ********************
                    >291  *  COMD PC=        *
                    >292  ********************
                    >293  
00CA7C: 20 F3 CC    >294  COMDPC   JSR   GETCHR      ;DOES DATA FOLLOW
00CA7F: D0 04 =CA85 >295           BNE   :CONT       ;IF YES
00CA81: A9 03       >296           LDA   #NUMEXP     ;ERROR NUMBER FOR NUMBER EXPECTED
00CA83: D0 07 =CA8C >297           BNE   ERREXIT1   
00CA85: 20 93 CA    >298  :CONT    JSR   GETPPC      ;LOAD PC WITH DATA
00CA88: 90 06 =CA90 >299           BCC   OKEXIT1     ;IF DATA WAS OK 
00CA8A: A9 04       >300  BADPARX  LDA   #BADPAR     ;BAD PARAMETER ERROR NUMBER
                    >301  
                    >302  ERREXIT1                  
00CA8C: 20 AE CF    >303           JSR   TRANSFR1   ;IF NO
00CA8F: 35          >304           DFB   ERRBEEPC   ;code
00CA90: 4C 9D CF    >305  OKEXIT1  JMP   MAIN11     
                    >306  
00CA93: 20 FF CC    >307  GETPPC   JSR   CHKREAD     ;CHECK FOR HEX AND READ
00CA96: B0 17 =CAAF >308           BCS   :ERR        ;IF NOT HEX
00CA98: 8D 1B C8    >309           STA   PCLO        ;CHANGE PC
00CA9B: 8D 35 C8    >310           STA   MEMLOW     
00CA9E: AD 2B C8    >311           LDA   LETTER2    
00CAA1: 8D 1C C8    >312           STA   PCHI        ;CHANGE PC
00CAA4: 8D 36 C8    >313           STA   MEMHI       ;USED BY BANKCHEK
00CAA7: 20 AE CF    >314           JSR   TRANSFR1   ;GET BANK #
00CAAA: 34          >315           DFB   BANKCHEKC  ;code
00CAAB: 8D 1D C8    >316           STA   PBR        
00CAAE: 18          >317           CLC              ;NO ERRORS
00CAAF: 60          >318  :ERR     RTS              
                    >319  
                    >320  ********************************
                    >321  *  COMDPA
                    >322  ********************************
                    >323  
00CAB0: 20 FF CC    >324  COMDPA   JSR   CHKREAD     ;CHECK FOR HEX AND READ
00CAB3: B0 D5 =CA8A >325           BCS   BADPARX     ;IF NOT HEX
00CAB5: 8D 11 C8    >326           STA   ACC         ;CHANGE ACC
00CAB8: 4C 9D CF    >327           JMP   MAIN11     
                    >328  
                    >329  ********************************
                    >330  *  COMDPX
                    >331  ********************************
                    >332  
00CABB: 20 FF CC    >333  COMDPX   JSR   CHKREAD    
00CABE: B0 CA =CA8A >334           BCS   BADPARX    
00CAC0: 8D 13 C8    >335           STA   XREG        ;CHANGE XREG
00CAC3: 4C 9D CF    >336           JMP   MAIN11     
                    >337  
                    >338  ********************************
                    >339  *  COMDPY
                    >340  ********************************
                    >341  
00CAC6: 20 FF CC    >342  COMDPY   JSR   CHKREAD    
00CAC9: B0 BF =CA8A >343           BCS   BADPARX    
00CACB: 8D 15 C8    >344           STA   YREG        ;CHANGE YREG
00CACE: 4C 9D CF    >345           JMP   MAIN11     
                    >346  
                    >347  ********************************
                    >348  *  COMDPS
                    >349  ********************************
                    >350  
00CAD1: 20 FF CC    >351  COMDPS   JSR   CHKREAD    
00CAD4: B0 B4 =CA8A >352           BCS   BADPARX    
00CAD6: 8D 17 C8    >353           STA   STACK       ;CHANGE STACK
00CAD9: 20 AE CF    >354           JSR   TRANSFR1   ;UPDATE STACK WINDOW
00CADC: CF          >355           DFB   DISSTKWC   ;code
00CADD: 4C 40 CB    >356           JMP   SETDRW      ;SET DR WINDOW
                    >357  
                    >358  ******************************
                    >359  *   COMDGO [A] - RUN PROGRAM *
                    >360  ******************************
                    >361  
00CAE0: F0 05 =CAE7 >362  COMDGO   BEQ   GOATPC      ;NO PC FOLLOWS, RUN AT CURRENT PC
00CAE2: 20 93 CA    >363           JSR   GETPPC      ;LOAD PC WITH ADDRESS
00CAE5: B0 A3 =CA8A >364  TOBPX    BCS   BADPARX     ;IF NOT VALID ADDRESS
                    >365  
                    >366  * TRACE 1 INSTRUCTION THEN GO
                    >367  
00CAE7: A9 A5       >368  GOATPC   LDA   #EXECUTE   ;LOW BYTE
00CAE9: 8D 3A C8    >369           STA   ENABLTVC   
00CAEC: A9 CE       >370           LDA   #>EXECUTE  ;HI BYTE
00CAEE: 8D 3B C8    >371           STA   ENABLTVC+1 
00CAF1: 20 AE CF    >372           JSR   TRANSFR1   ;RUN USERS PROGRAM
00CAF4: 18          >373           DFB   STEP1C      ;code <NO RETURN>
                    >374  
                    >375  ********************************
                    >376  *  COMDSB - SET BREAK 
                    >377  ********************************
                    >378  
                    >379  * SB (TYPE) (LOCATION) . (# OF TIME TO PASS)
                    >380  * SB   R      012003   .    1000
                    >381  *          LETTER 3,2,1     LETTER 6,5,4
                    >382  
            =CAF5   >383  COMDSB   EQU   *          
00CAF5: F0 50 =CB47 >384           BEQ   BKPDIS      ;IF NO DISPLAY BREAKPOINTS
00CAF7: C9 D2       >385           CMP   #"R"        ;CHECK TYPE
00CAF9: F0 08 =CB03 >386           BEQ   :TYPEOK     ;IF VALID
00CAFB: C9 C9       >387           CMP   #"I"        ;CHECK TYPE
00CAFD: F0 04 =CB03 >388           BEQ   :TYPEOK     ;IF VALID
00CAFF: A9 D2       >389           LDA   #"R"        ;DEFAULT TO REAL
00CB01: 88          >390           DEY              ;PUT POINTERS BACK TO
00CB02: E8          >391           INX              ;.. LAST CHAR
00CB03: 8D 30 C8    >392  :TYPEOK  STA   SBTYPE      ;SAVE TYPE
00CB06: 20 01 CD    >393           JSR   CHKREADA   
00CB09: B0 DA =CAE5 >394           BCS   TOBPX       ;IF NOT HEX
00CB0B: 2C 2D C9    >395           BIT   ADDRS2F     ;2 NUMBERS INPUT ?
00CB0E: 30 0A =CB1A >396           BMI   :TWO        ;IF YES
00CB10: A9 00       >397           LDA   #0         
00CB12: 8D 2E C8    >398           STA   LETTER5     ;
00CB15: A9 01       >399           LDA   #1         
00CB17: 8D 2D C8    >400           STA   LETTER4     ;DEFAULT TO 1 ON # OF TIMES TO PASS
00CB1A: AD FD C8    >401  :TWO     LDA   POINT       ;SEE IF THERE IS ROOM FOR ANOTHER BREAK
00CB1D: C9 32       >402           CMP   #50         ;50 BREAKS
00CB1F: 90 05 =CB26 >403           BLT   NOTFULL     ;IF OK
00CB21: A9 10       >404           LDA   #BRKFUL     ;ERROR NUMBER
00CB23: 4C 8C CA    >405  SBERR    JMP   ERREXIT1   ;NO ROOM
00CB26: 20 AE CF    >406  NOTFULL  JSR   TRANSFR1   ;PUT BRK & UPDATE BRK STACK (Z=0 NOT RAM)
00CB29: 02          >407           DFB   PUTBREAKC  ;CODE
00CB2A: F0 04 =CB30 >408           BEQ   ISRAM       ;LOCATION IS RAM
00CB2C: 20 AE CF    >409  NOTRAM   JSR   TRANSFR1   ;DISPLAY MESSAGE
00CB2F: 0C          >410           DFB   DISNOTRMC  ;CODE
00CB30: 20 AE CF    >411  ISRAM    JSR   TRANSFR1   ;USE THIS TO SET BRK WINDOW
00CB33: BF          >412           DFB   DISBRKWC   ;code
00CB34: 20 AE CF    >413           JSR   TRANSFR1   ;CLEAR HOME
00CB37: 97          >414           DFB   CLRHOMEC   ;code
00CB38: 20 AE CF    >415           JSR   TRANSFR1   ;UPDATE BRK WINDOW
00CB3B: BF          >416           DFB   DISBRKWC   ;code
00CB3C: 20 AE CF    >417           JSR   TRANSFR1   ;UPDATE FLAG WINDOW
00CB3F: A7          >418           DFB   DISFLGWC   ;code
00CB40: 20 AE CF    >419  SETDRW   JSR   TRANSFR1   ;SET DR WINDOW
00CB43: 32          >420           DFB   WINDDRC     ;code
00CB44: 4C 9D CF    >421           JMP   MAIN11     
00CB47: 20 DD CD    >422  BKPDIS   JSR   DISBKP      ;DISPLAY BREAKPOINTS
00CB4A: 4C 9D CF    >423           JMP   MAIN11     
                    >424  
                    >425  ********************************
                    >426  *  COMDHB - SET HARDWARE BREAK
                    >427  ********************************
                    >428  
            =CB4D   >429  COMDHB   EQU   *          
00CB4D: F0 1E =CB6D >430           BEQ   SHDIS       ;NOTHING THERE SO DISPLAY BREAKPOINTS
00CB4F: 20 FF CC    >431           JSR   CHKREAD     ;CHECK FOR HEX AND READ
00CB52: B0 91 =CAE5 >432  TOBPX2   BCS   TOBPX       ;IF ERROR
00CB54: 8D 01 C8    >433           STA   VIAORA      ;STORE IN LOW BYTE OF COMPARATOR
00CB57: AD 2B C8    >434           LDA   LETTER2     ;GET HI BYTE
00CB5A: 8D 10 C8    >435           STA   VIAORB      ;STORE IN HI BYTE
00CB5D: AD 2C C8    >436           LDA   LETTER3    
00CB60: 8D 2B C9    >437           STA   HARDPBR     ;BANK TO STOP IN
00CB63: A9 90       >438           LDA   #%10010000 
00CB65: 0D 39 C8    >439           ORA   IERBUFF     ;ENABLE HARDWARE BREAK
00CB68: 8D 39 C8    >440           STA   IERBUFF    
00CB6B: D0 03 =CB70 >441           BNE   NODISH     
00CB6D: 20 60 CE    >442  SHDIS    JSR   DISHB       ;DISPLAY HARDWARE BREAK
00CB70: 4C 30 CB    >443  NODISH   JMP   ISRAM       ;UPDATE BRK WINDOW 
00CB73: 4C 8C CA    >444  HBERR    JMP   ERREXIT1   ;IF NOT HEX
                    >445  
                    >446  ********************************
                    >447  *  COMDRB - REMOVE BREAK
                    >448  ********************************
                    >449  
                    >450  * RB 012003
                    >451  
            =CB76   >452  COMDRB   EQU   *          
00CB76: F0 DA =CB52 >453           BEQ   TOBPX2      ;IF NO ADDRESS FOLLOWS
00CB78: 20 FF CC    >454           JSR   CHKREAD     ;READ ADDRS INTO LETTER 3,2,1
00CB7B: B0 D5 =CB52 >455           BCS   TOBPX2      ;IF NOT HEX
00CB7D: 20 AE CF    >456           JSR   TRANSFR1   ;SEE IF ADDRESS IS ON LIST
00CB80: 52          >457           DFB   VALIDADC   ;code
00CB81: 30 07 =CB8A >458           BMI   INVBREAK   ;INVALID BREAKPOINT
                    >459  
                    >460  * THE FOLLOWING SUBROUTINE REPLACES BREAKPOINT IN PROGRAM
                    >461  * WITH ORIGINAL DATA. REMOVES FROM BREAKS BUFFER, AND
                    >462  * REORGANIZES LIST. ENTER WITH Y POINTING AT BRK.
                    >463  
00CB83: 20 AE CF    >464           JSR   TRANSFR1   ;REPLACE BRK WITH ORIG DATA
00CB86: 5A          >465           DFB   REPLACEC   ;code
00CB87: 4C 30 CB    >466           JMP   ISRAM       ;UPDATE BRK WINDOW
                    >467  
                    >468  INVBREAK                  
00CB8A: 20 8E CE    >469           JSR   DISINVBP   ;DISPLAY "INVALID BRK ADDRS"
00CB8D: 4C 9D CF    >470  RBTOM11  JMP   MAIN11     
                    >471  
                    >472  ********************************
                    >473  *  COMDRH - REMOVE HARDWARE BREAK
                    >474  ********************************
                    >475  
00CB90: 20 81 CC    >476  COMDRH   JSR   CLRHARD     ;CLEAR HARDWARE BREAK
00CB93: 4C 30 CB    >477           JMP   ISRAM       ;UPDATE BRK WINDOW
                    >478  
                    >479  ********************************
                    >480  *  COMDRA - REMOVE ALL BREAKS
                    >481  ********************************
                    >482  
00CB96: 20 74 CC    >483  COMDRA   JSR   CLEARALL   ;REPLACE ALL BREAKPOINTS WITH ORIGINAL DATA
00CB99: 4C 30 CB    >484           JMP   ISRAM       ;UPDATE BRK WINDOW
                    >485  
                    >486  ********************************
                    >487  *  COMDMM - MEMORY MODIFY
                    >488  ********************************
                    >489  
            =CB9C   >490  COMDMM   EQU   *          
00CB9C: F0 06 =CBA4 >491           BEQ   :MMNOADD   ;IF NO ADDRESS FOLLOWS
00CB9E: 20 AE CF    >492           JSR   TRANSFR1   ;GET ADDRESS
00CBA1: 1B          >493           DFB   LOADMEMC   ;CODE
00CBA2: B0 5B =CBFF >494           BCS   TOERR1     
                    >495  :MMNOADD                  
00CBA4: 20 BD CC    >496           JSR   DSMEMCOL   ;DISPLAY MEM POINTER :
00CBA7: A0 00       >497           LDY   #0         
00CBA9: 20 E4 CC    >498           JSR   SPCBYTE     ;DISPLAY SPACE, BYTE
00CBAC: A9 A0       >499           LDA   #$A0       
00CBAE: 20 AE CF    >500           JSR   TRANSFR1   ;SPACE
00CBB1: 07          >501           DFB   COUTC       ;code
00CBB2: 20 AE CF    >502           JSR   TRANSFR1   ;READ NEXT CHARACTER
00CBB5: 17          >503           DFB   RDCHARC     ;CODE
00CBB6: C9 8B       >504           CMP   #UPARROW   
00CBB8: F0 32 =CBEC >505           BEQ   :MMDECP     ;IF UP ARROW
00CBBA: C9 8A       >506           CMP   #DNARROW   
00CBBC: F0 23 =CBE1 >507           BEQ   :INCWCR     ;IF DOWN ARROW
00CBBE: C9 8D       >508           CMP   #CR         ;IS IT RETURN
00CBC0: F0 1F =CBE1 >509           BEQ   :INCWCR     ;IF YES GO TO NEXT ADDR
00CBC2: A2 00       >510           LDX   #0         
00CBC4: 20 AE CF    >511           JSR   TRANSFR1   ;GET INPUT NUMBER
00CBC7: 67          >512           DFB   GETLNNOC   ;code
00CBC8: B0 C3 =CB8D >513           BCS   RBTOM11     ;<esc> key so return to command level
00CBCA: E8          >514           INX              ;MAKE X > 0
00CBCB: A0 00       >515           LDY   #0          ;FIRST CHAR
00CBCD: 20 01 CD    >516           JSR   CHKREADA   ;CHECK FOR HEX AND READ
00CBD0: B0 06 =CBD8 >517           BCS   :MMERR      ;IF NOT HEX
00CBD2: 20 AE CF    >518           JSR   TRANSFR1   ;INIT LOWADD, STORE ACC, AND VERIFY
00CBD5: 03          >519           DFB   INITMMVC   ;CODE
00CBD6: F0 0D =CBE5 >520           BEQ   :INCPC      ;IF OK
00CBD8: F0 B3 =CB8D >521  :MMERR   BEQ   RBTOM11     ;GO TO COMMAND LEVEL
00CBDA: 20 AE CF    >522           JSR   TRANSFR1   ;IF NO, BEEP
00CBDD: 77          >523           DFB   BELLC       ;CODE
00CBDE: 4C A4 CB    >524           JMP   :MMNOADD   ;DISPLAY
00CBE1: 20 AE CF    >525  :INCWCR  JSR   TRANSFR1   
00CBE4: 0F          >526           DFB   CROUTC      ;CODE
00CBE5: 20 AE CF    >527  :INCPC   JSR   TRANSFR1   ;INCREMENT MEMLOW & MEMHI
00CBE8: 13          >528           DFB   INCMEMLHC  ;CODE
00CBE9: 4C A4 CB    >529           JMP   :MMNOADD   ;NEXT LOCATAION
00CBEC: 20 AE CF    >530  :MMDECP  JSR   TRANSFR1   
00CBEF: 0F          >531           DFB   CROUTC      ;code
00CBF0: 20 AE CF    >532           JSR   TRANSFR1   
00CBF3: 0B          >533           DFB   DECMEMLHC  ;code
00CBF4: 4C A4 CB    >534           JMP   :MMNOADD   ;GO BACK ONE ADDRESS
                    >535  
                    >536  ********************************
                    >537  *  COMDMD - MEMORY DISPLAY
                    >538  ********************************
                    >539  
            =CBF7   >540  COMDMD   EQU   *          
00CBF7: F0 09 =CC02 >541           BEQ   MDNOADDR   ;IF NO ADDRESS FOLLOWS
00CBF9: 20 AE CF    >542           JSR   TRANSFR1   ;GET ADDRESS
00CBFC: 1B          >543           DFB   LOADMEMC   ;CODE
00CBFD: 90 03 =CC02 >544           BCC   MDNOADDR   
00CBFF: 4C 8A CA    >545  TOERR1   JMP   BADPARX    
                    >546  MDNOADDR                  
00CC02: 20 AE CF    >547           JSR   TRANSFR1   ;FULL SCREEN
00CC05: 2C          >548           DFB   WINDFULC   ;CODE
00CC06: A9 10       >549  MDAGAIN  LDA   #16         ;DISPLAY  256 bytes
00CC08: 48          >550  MDLOOP   PHA              ;SAVE
00CC09: 20 8A CC    >551           JSR   MEMDISP     ;DISPLAY LINE OF MEMORY
00CC0C: 18          >552           CLC              
00CC0D: AD 35 C8    >553           LDA   MEMLOW     
00CC10: 69 10       >554           ADC   #16        
00CC12: 8D 35 C8    >555           STA   MEMLOW     
00CC15: AD 36 C8    >556           LDA   MEMHI      
00CC18: 69 00       >557           ADC   #0         
00CC1A: 8D 36 C8    >558           STA   MEMHI      
00CC1D: 68          >559           PLA              
00CC1E: 38          >560           SEC              
00CC1F: E9 01       >561           SBC   #1         
00CC21: D0 E5 =CC08 >562           BNE   MDLOOP     
00CC23: 20 AE CF    >563           JSR   TRANSFR1   ;"(return/esc)" C=0 on return, C=1 on esc
00CC26: 55          >564           DFB   WAITCRC     ;code
00CC27: B0 20 =CC49 >565           BCS   WINDM10    
00CC29: 90 DB =CC06 >566           BCC   MDAGAIN     ;do another screen full
                    >567  
                    >568  ********************************
                    >569  *  COMDM - MENU
                    >570  ********************************
                    >571  
                    >572  CMDMENU                   
00CC2B: 20 AE CF    >573           JSR   TRANSFR1   ;FULL SCREEN
00CC2E: 2C          >574           DFB   WINDFULC   ;CODE
00CC2F: 20 B8 CD    >575           JSR   WRINIT1    
00CC32: B9 2D C8    >576  :MORE    LDA   MSGAVAIL,Y ;GET CHAR
00CC35: 20 C2 CD    >577           JSR   WRITECK1   ;DISPLAY
00CC38: 90 F8 =CC32 >578           BCC   :MORE      
                    >579  
                    >580  * MAX MESSAGE LENGTH IS 256 BYTES
                    >581  
00CC3A: 20 B8 CD    >582           JSR   WRINIT1    
00CC3D: B9 D4 C8    >583  :MORE2   LDA   MSGAVAL2,Y ;GET CHAR
00CC40: 20 C2 CD    >584           JSR   WRITECK1   ;DISPLAY
00CC43: 90 F8 =CC3D >585           BCC   :MORE2     
                    >586  
00CC45: 20 AE CF    >587           JSR   TRANSFR1   ;"(return/esc)" C=0 on return, C=1 on esc
00CC48: 55          >588           DFB   WAITCRC     ;code
00CC49: 20 AE CF    >589  WINDM10  JSR   TRANSFR1   ;redisplay windows
00CC4C: 2A          >590           DFB   DISPONC     ;code
                    >591  
00CC4D: 4C 9D CF    >592  MTOM10   JMP   MAIN11     
                    >593  
                    >594  *********************************
                    >595  *  COMDJS - JSR
                    >596  *********************************
                    >597  
                    >598  *EXECUTE THE SUBROUTINE AT THE ADDRESS FOLLOWING
                    >599  * THE "JS" COMMAND AND RETURN TO EXT2 COMMAND PROMPT.
                    >600  
            =CC50   >601  COMDJS   EQU   *          
00CC50: F0 05 =CC57 >602           BEQ   JSERR       ;IF NO ADDRESS FOLLOWS
00CC52: 20 FF CC    >603           JSR   CHKREAD     ;CHECK FOR VALID HEX PUT IN LETTER2 & LETTER1
00CC55: 90 03 =CC5A >604           BCC   JSCONT      ;IF OK
00CC57: 4C FF CB    >605  JSERR    JMP   TOERR1      ;INDICATE ERROR & GOTO MAIN11
                    >606  
                    >607  *SET UP RTS SO USER ROUTINE RETURNS TO RESETJMP IN
                    >608  * CARDS I/O SLOT
                    >609  
00CC5A: AD 30 C9    >610  JSCONT   LDA   SLOTCN      ;SLOT # $CN
00CC5D: 48          >611           PHA              ;HI BYTE OF RETURN ADDRESS
00CC5E: A9 19       >612           LDA   #RESETJMP-1 ;LOW BYTE OF RETURN ADDRESS
00CC60: 48          >613           PHA              
00CC61: AD 2A C8    >614           LDA   LETTER1     ;LOW ADDRESS BYTE OF USER SUB
00CC64: 8D 42 C8    >615           STA   SUBTRACE   ;SUBTRACE IS OK TO USE
00CC67: AD 2B C8    >616           LDA   LETTER2     ;HI ADDRESS BYTE
00CC6A: 8D 43 C8    >617           STA   SUBTRACE+1 
00CC6D: 20 AE CF    >618           JSR   TRANSFR1   ;RESTORE THE Z PAGE & TEXT RAM
00CC70: 16          >619           DFB   RESTTEXTC  ;CODE
00CC71: 6C 42 C8    >620           JMP   (SUBTRACE) 
                    >621  
                    >622  ******************************
                    >623  *  SUBROUTINES
                    >624  ******************************
                    >625  
                    >626  * CLEAR ALL OF THE BREAKPOINTS
                    >627  
                    >628  CLEARALL                  
00CC74: AC FD C8    >629           LDY   POINT       ;GET POINTER
00CC77: F0 08 =CC81 >630           BEQ   CLRHARD     ;BP'S ALL GONE
00CC79: 88          >631           DEY              ;POINT AT BRL
00CC7A: 20 AE CF    >632           JSR   TRANSFR1   ;REPLACE BRK WITH ORIG DATA
00CC7D: 5A          >633           DFB   REPLACEC   
00CC7E: 4C 74 CC    >634           JMP   CLEARALL   ;LOOP UNTIL DONE
00CC81: A9 EF       >635  CLRHARD  LDA   #%11101111 ;DISABLE HARDWARE BREAK
00CC83: 2D 39 C8    >636           AND   IERBUFF     ;SET IER FLAG FOR HARDWARE BREAK TO ZERO (CA1)
00CC86: 8D 39 C8    >637           STA   IERBUFF    
00CC89: 60          >638           RTS              
                    >639  
                    >640  * DISPLAY ONE LINE OF MEMORY
                    >641  
            =CC8A   >642  MEMDISP  EQU   *          
00CC8A: 20 BD CC    >643           JSR   DSMEMCOL   ;DISPLAY MEMORY POINTER
00CC8D: A0 00       >644           LDY   #00        
                    >645  MMDISHEX                  
00CC8F: 20 E4 CC    >646           JSR   SPCBYTE     ;DISPLAY SPACE BYTE
00CC92: C8          >647           INY              
00CC93: C0 10       >648           CPY   #16        
00CC95: D0 F8 =CC8F >649           BNE   MMDISHEX   
00CC97: A2 02       >650           LDX   #2         
00CC99: 20 AE CF    >651           JSR   TRANSFR1   ;2 SPACES
00CC9C: 27          >652           DFB   PRBL2C      ;CODE
00CC9D: A0 00       >653           LDY   #00        
                    >654  MMDISASC                  
00CC9F: 20 AE CF    >655           JSR   TRANSFR1   ;LDA LOWADD,Y
00CCA2: 00          >656           DFB   LDAINDYC   ;CODE
                    >657  
                    >658  *CHANGE CONTROL CODES TO NORMAL LETTERS SO THEY DON'T
                    >659  * MESS UP THE DISPLAY
                    >660  
00CCA3: 09 80       >661           ORA   #$80        ;FORCE TO NEGATIVE
00CCA5: C9 FF       >662           CMP   #$FF        ;$FF IS NOT ALLOWED
00CCA7: F0 04 =CCAD >663           BEQ   MAKEDOT    
00CCA9: C9 A0       >664           CMP   #$A0       
00CCAB: B0 02 =CCAF >665           BGE   MMDISOK    
00CCAD: A9 AE       >666  MAKEDOT  LDA   #"."        ;DISPLAY PERIOD
00CCAF: 20 AE CF    >667  MMDISOK  JSR   TRANSFR1   
00CCB2: 07          >668           DFB   COUTC       ;CODE
00CCB3: C8          >669           INY              ;DISPLAY THE ASCII EQUIV
00CCB4: C0 10       >670           CPY   #16        
00CCB6: D0 E7 =CC9F >671           BNE   MMDISASC   
00CCB8: 20 AE CF    >672           JSR   TRANSFR1   ;RETURN
00CCBB: 0F          >673           DFB   CROUTC      ;CODE
00CCBC: 60          >674           RTS              
                    >675  
                    >676  * DISPLAY CONTENTS OF MEMHI & MEMLOW
                    >677  *DISPLAY USER SPECIFIED BANK
                    >678  
                    >679  DSMEMCOL                  
00CCBD: AD 5E C9    >680           LDA   MEMPBR     
00CCC0: 8D 34 C8    >681           STA   PBRADD     
00CCC3: 20 AE CF    >682           JSR   TRANSFR1   ;PRINT BANK NUMBER
00CCC6: 37          >683           DFB   PRBYTEC     ;CODE
00CCC7: A9 AF       >684           LDA   #"/"       
00CCC9: 20 AE CF    >685           JSR   TRANSFR1   
00CCCC: 07          >686           DFB   COUTC       ;CODE
00CCCD: AD 36 C8    >687           LDA   MEMHI      
00CCD0: 8D 88 C8    >688           STA   HIADD      
00CCD3: AE 35 C8    >689           LDX   MEMLOW     
00CCD6: 8E 87 C8    >690           STX   LOWADD     
00CCD9: 20 AE CF    >691           JSR   TRANSFR1   
00CCDC: 3F          >692           DFB   PRNTAXC     ;CODE
00CCDD: A9 BA       >693           LDA   #":"       
00CCDF: 20 AE CF    >694           JSR   TRANSFR1   
00CCE2: 07          >695           DFB   COUTC       ;CODE
00CCE3: 60          >696           RTS              
                    >697  
                    >698  * DISPLAY SPACE AND LOWADD,Y AS HEX BYTE
                    >699  
00CCE4: A9 A0       >700  SPCBYTE  LDA   #$A0       
00CCE6: 20 AE CF    >701           JSR   TRANSFR1   
00CCE9: 07          >702           DFB   COUTC       ;CODE
00CCEA: 20 AE CF    >703           JSR   TRANSFR1   
00CCED: 00          >704           DFB   LDAINDYC   ;CODE
00CCEE: 20 AE CF    >705           JSR   TRANSFR1   
00CCF1: 37          >706           DFB   PRBYTEC     ;CODE
00CCF2: 60          >707           RTS              
                    >708  
                    >709  * IGNORES SPACES & RETURNS WITH Z BIT SET WHEN BUFFER EMPTY.
                    >710  
00CCF3: B9 33 C9    >711  GETCHR   LDA   IN,Y        ;GET CHARACTER
00CCF6: C8          >712           INY              
00CCF7: CA          >713           DEX              ;SETS ZFLAG WHEN BUFFER EMPTY
00CCF8: F0 04 =CCFE >714           BEQ   EMPTY      
00CCFA: C9 A0       >715           CMP   #$A0        ;IS CHARACTER A SPACE
00CCFC: F0 F5 =CCF3 >716           BEQ   GETCHR      ;IGNORE SPACES
00CCFE: 60          >717  EMPTY    RTS              
                    >718  
                    >719  * READ IN THE NUMBERS (DEFAULT TO HEX, "!" = DECIMAL)
                    >720  * PUT IN (LETTER 3,2,1) OR (LETTER 3,2,1 . LETTER 6,5,4)
                    >721  * ALLOW THE FOLLOWING AS VALID $0001, $ 0001, $1, 1, C1B ETC.
                    >722  * C = 1 IF NO NUMBER OR INVALID CHARACTER
                    >723  
00CCFF: 88          >724  CHKREAD  DEY              ;PUT POINTERS BACK
00CD00: E8          >725           INX              ;TO LOOK AT LAST CHARACTER
                    >726  CHKREADA                  
00CD01: A9 00       >727           LDA   #0         
00CD03: 8D 2D C9    >728           STA   ADDRS2F     ;CLEAR FLAGS
00CD06: 8D 5D C9    >729           STA   INLENGTH   
00CD09: A9 00       >730  READAD2  LDA   #0         
00CD0B: 8D 2C C9    >731           STA   DTOHFLG     ;DEFAULT TO HEX 
00CD0E: 20 02 CF    >732           JSR   CLRLETER   ;CLEAR LETTER 1,2,3
00CD11: 20 F3 CC    >733  SKIPDLR  JSR   GETCHR      ;GET NEXT CHAR (IGNORE SPACES)
00CD14: F0 22 =CD38 >734           BEQ   CKRDERR     ;ERROR
00CD16: C9 A4       >735           CMP   #"$"        ;IS CHAR A DOLLAR SIGN
00CD18: F0 F7 =CD11 >736           BEQ   SKIPDLR     ;IF YES
00CD1A: C9 A1       >737           CMP   #"!"        ;DECIMAL NUMBER ?
00CD1C: D0 05 =CD23 >738           BNE   READAD      ;IF NO
00CD1E: 8D 2C C9    >739           STA   DTOHFLG     ;IF YES, SET DEC TO HEX FLAG
00CD21: F0 EE =CD11 >740           BEQ   SKIPDLR    
                    >741  
                    >742  * READ ADDRESS IN, CONVERT TO HEX, STORE IN LETTER 1,2,3
                    >743  * INLENGTH CONTAINS NUMBER OF DIGITS READ
                    >744  
00CD23: C9 B0       >745  READAD   CMP   #$B0        ;IS IT < "0"
00CD25: 90 11 =CD38 >746           BLT   CKRDERR     ;IF YES
00CD27: C9 BA       >747           CMP   #$BA       
00CD29: 90 12 =CD3D >748           BLT   ISDEC       ;IS 0-9
00CD2B: C9 C1       >749           CMP   #$C1        ;COMPARE WITH "A"
00CD2D: 90 09 =CD38 >750           BLT   CKRDERR    
00CD2F: C9 C7       >751           CMP   #$C7       
00CD31: B0 05 =CD38 >752           BGE   CKRDERR    
00CD33: 2C 2C C9    >753           BIT   DTOHFLG     ;SUPPOSED TO BE DECIMAL ?
00CD36: 10 02 =CD3A >754           BPL   ITISHEX     ;IF NO
                    >755  
00CD38: 38          >756  CKRDERR  SEC              
00CD39: 60          >757           RTS              ;******** ERROR RTS ********
                    >758  
00CD3A: 18          >759  ITISHEX  CLC              ;CLEAR CARRY
00CD3B: 69 09       >760           ADC   #$9         ;ADD 9 TO CONVERT TO A-F
00CD3D: 29 0F       >761  ISDEC    AND   #$F         ;STRIP MOST SIG. DIGIT
00CD3F: 8C 3F C8    >762           STY   YBUFF      
00CD42: A0 04       >763           LDY   #4         
00CD44: 0E 2A C8    >764  :SHIFT   ASL   LETTER1     ; -KEEP SHIFTING IN NEW DIGITS
00CD47: 2E 2B C8    >765           ROL   LETTER2     ; - FROM THE RIGHT UNTIL
00CD4A: 2E 2C C8    >766           ROL   LETTER3    
00CD4D: 88          >767           DEY              ; - OUT OF DIGITS
00CD4E: D0 F4 =CD44 >768           BNE   :SHIFT     
00CD50: 0D 2A C8    >769           ORA   LETTER1    
00CD53: 8D 2A C8    >770           STA   LETTER1    
00CD56: AC 3F C8    >771           LDY   YBUFF       ;RESTORE
00CD59: EE 5D C9    >772           INC   INLENGTH   
00CD5C: 20 F3 CC    >773           JSR   GETCHR      ;GET NEXT CHAR IF ANY
00CD5F: F0 25 =CD86 >774           BEQ   READAEND   
00CD61: C9 AF       >775           CMP   #"/"        ;NEW BANK ?
00CD63: D0 11 =CD76 >776           BNE   :CHKPER     ;IF NO
00CD65: 2C 2C C9    >777           BIT   DTOHFLG     ;CONVERT TO HEX ?
00CD68: 10 03 =CD6D >778           BPL   :INHEX      ;IF NO
00CD6A: 20 9A CE    >779           JSR   DECHEX      ;CONVERT
00CD6D: AD 2A C8    >780  :INHEX   LDA   LETTER1    
00CD70: 8D 5E C9    >781           STA   MEMPBR      ;NEW PBR
00CD73: 4C 09 CD    >782           JMP   READAD2    
00CD76: C9 AE       >783  :CHKPER  CMP   #"."        ;PERIOD MEANS SECOND NUMBER
00CD78: F0 27 =CDA1 >784           BEQ   ADDRS2      ;READ SECOND NUMBER
00CD7A: C9 DD       >785           CMP   #"]"       
00CD7C: F0 08 =CD86 >786           BEQ   READAEND   
00CD7E: C9 A9       >787           CMP   #")"       
00CD80: F0 04 =CD86 >788           BEQ   READAEND   
00CD82: C9 AC       >789           CMP   #","        ;USE COMMA AS DELIMITER
00CD84: D0 9D =CD23 >790           BNE   READAD     
                    >791  READAEND                  
00CD86: 2C 2C C9    >792           BIT   DTOHFLG     ;CONVERT DEC TO HEX ?
00CD89: 10 03 =CD8E >793           BPL   :INHEX      ;IF NO
00CD8B: 20 9A CE    >794           JSR   DECHEX      ;CONVERT
00CD8E: AD 5E C9    >795  :INHEX   LDA   MEMPBR      ;DEFAULT TO CURRENT MEMPBR
00CD91: 8D 2C C8    >796           STA   LETTER3    
00CD94: 2C 2D C9    >797           BIT   ADDRS2F     ;2 NUMBERS ENTERED ?
00CD97: 10 03 =CD9C >798           BPL   :ONE        ;IF NO
00CD99: 20 0E CF    >799           JSR   SWAPLET     ;IF YES, SWAP LETTERS
00CD9C: AD 2A C8    >800  :ONE     LDA   LETTER1     ;LOW BYTE
00CD9F: 18          >801           CLC              
00CDA0: 60          >802           RTS              ;RETURN WHEN OUT OF CHARACTERS
                    >803  
                    >804  * TRANSFER LETTER 3,2,1 TO LETTER 6,5,4
                    >805  * READ SECOND NUMBER INTO LETTER 3,2,1
                    >806  
00CDA1: 8D 2D C9    >807  ADDRS2   STA   ADDRS2F     ;SET 2 ADDRESS FLAG
00CDA4: 2C 2C C9    >808           BIT   DTOHFLG     ;CONVERT DEC TO HEX ?
00CDA7: 10 03 =CDAC >809           BPL   :INHEX      ;IF NO
00CDA9: 20 9A CE    >810           JSR   DECHEX      ;CONVERT
00CDAC: 20 0E CF    >811  :INHEX   JSR   SWAPLET     ;SWAP LETTER 1,2,3 WITH LETTER 4,5,6
00CDAF: AD 5E C9    >812           LDA   MEMPBR      ;DEFAULT TO CURRENT MEMPBR
00CDB2: 8D 2F C8    >813           STA   LETTER6    
00CDB5: 4C 09 CD    >814           JMP   READAD2     ;READ NEXT NUMBER 
                    >815  
                    >816  *WRITE OUT THE STRING WHO'S ADDRESS IS STORED IN HIADD &
                    >817  * LOWADD
                    >818  
                    >819  ****************************************
                    >820  * MUST BE BEFORE $CF00
                    >821  ****************************************
                    >822  
00CDB8: 8C 3F C8    >823  WRINIT1  STY   YBUFF       ;SAVE
00CDBB: A0 00       >824           LDY   #0         
                    >825  WRITMOR1                  
00CDBD: CD 00 C8    >826           CMP   $C800       ;DISABLE EXTRAM
00CDC0: 18          >827           CLC              ;NOT FINISHED FLAG
00CDC1: 60          >828           RTS              
                    >829  
                    >830  WRITECK1                  
00CDC2: CD 00 CF    >831           CMP   $CF00       ;ENABLE RAM
00CDC5: C8          >832           INY              ;INCREMENT POINTER
00CDC6: C9 84       >833           CMP   #EOT        ;IS IT EOT
00CDC8: F0 12 =CDDC >834           BEQ   WRITDON1   ;IF YES WRITE IS DONE
00CDCA: 29 FF       >835           AND   #$FF        ;SET FLAGS
00CDCC: 30 07 =CDD5 >836           BMI   NOSPACE     ;IF MSB HI
00CDCE: AA          >837           TAX              
00CDCF: 20 AE CF    >838           JSR   TRANSFR1   ;PRINT SPACES
00CDD2: 27          >839           DFB   PRBL2C      ;CODE
00CDD3: A9 A0       >840           LDA   #" "       
00CDD5: 20 AE CF    >841  NOSPACE  JSR   TRANSFR1   ;DISPLAY ON OUTPUT DEVICE
00CDD8: 07          >842           DFB   COUTC       ;CODE
00CDD9: 4C BD CD    >843           JMP   WRITMOR1   ;WRITE MORE CHARACTERS
                    >844  WRITDON1                  
00CDDC: 60          >845           RTS              
                    >846  
                    >847  * DISPLAY THE BREAKPOINTS
                    >848  
00CDDD: 20 B8 CD    >849  DISBKP   JSR   WRINIT1    
00CDE0: B9 13 C8    >850  :MORE    LDA   MSGBRKPT,Y ;GET CHAR
00CDE3: 20 C2 CD    >851           JSR   WRITECK1   ;DISPLAY
00CDE6: 90 F8 =CDE0 >852           BCC   :MORE      
                    >853  
00CDE8: AC FD C8    >854           LDY   POINT       ;GET BREAKPOINT BUFFER POINTER
00CDEB: F0 22 =CE0F >855           BEQ   :DSEND      ;ALL DONE
00CDED: A2 03       >856           LDX   #3         
                    >857  :DISNEXT                  
00CDEF: 88          >858           DEY              
00CDF0: 8A          >859           TXA              
00CDF1: 48          >860           PHA              ;SAVE X
00CDF2: 20 10 CE    >861           JSR   DSPBRK     
00CDF5: 68          >862           PLA              
00CDF6: AA          >863           TAX              ;RESTORE X
00CDF7: CA          >864           DEX              ;END OF ROW?
00CDF8: D0 0B =CE05 >865           BNE   :SPC        ;IF NO
00CDFA: A2 03       >866           LDX   #3          ;3 BRKS PER ROW
00CDFC: AD 20 C8    >867           LDA   IOMODE      ;CHECK I/O MODE
00CDFF: F0 0A =CE0B >868           BEQ   :NOTSER     ;SKIP CR IF SCREEN I/O
00CE01: A9 8D       >869           LDA   #CR        
00CE03: D0 02 =CE07 >870           BNE   :NOSPC     
00CE05: A9 A0       >871  :SPC     LDA   #$A0       
00CE07: 20 AE CF    >872  :NOSPC   JSR   TRANSFR1   ;SPACE
00CE0A: 07          >873           DFB   COUTC       ;code
00CE0B: C0 00       >874  :NOTSER  CPY   #0         
00CE0D: D0 E0 =CDEF >875           BNE   :DISNEXT   
00CE0F: 60          >876  :DSEND   RTS              
                    >877  
                    >878  ***** DISPLAY THE BREAKPOINT INFO POINTED TO BY Y *****
                    >879  
00CE10: AE 23 C8    >880  DSPBRK   LDX   SLOTN0     
                    >881  ****************************************
                    >882  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >883  ****************************************
00CE13: A9 61       >884           LDA   #%01100001 ;RAM6, ROM1
00CE15: 9D 80 C0    >885           STA   SEGMBASE,X 
00CE18: B9 32 C9    >886           LDA   BRKTGLOW,Y 
00CE1B: 48          >887           PHA              
00CE1C: B9 00 C9    >888           LDA   BRKTGHI,Y  
00CE1F: 48          >889           PHA              
00CE20: B9 CE C8    >890           LDA   BRKLOW,Y   
00CE23: 48          >891           PHA              
00CE24: B9 9C C8    >892           LDA   BRKHI,Y    
00CE27: 48          >893           PHA              
00CE28: B9 6A C8    >894           LDA   BRKPBR,Y   
00CE2B: 48          >895           PHA              
00CE2C: B9 38 C8    >896           LDA   BRKTYPE,Y  
00CE2F: 48          >897           PHA              
                    >898  ****************************************
                    >899  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >900  ****************************************
00CE30: A9 01       >901           LDA   #%00000001 ;RAM0, ROM1
00CE32: 9D 80 C0    >902           STA   SEGMBASE,X 
00CE35: 68          >903           PLA              
00CE36: 20 AE CF    >904           JSR   TRANSFR1   ;PRINT TYPE
00CE39: 07          >905           DFB   COUTC       ;code
00CE3A: 68          >906           PLA              
00CE3B: 20 AE CF    >907           JSR   TRANSFR1   ;PRINT BANK NUMBER
00CE3E: 37          >908           DFB   PRBYTEC     ;code
00CE3F: A9 AF       >909           LDA   #"/"       
00CE41: 20 AE CF    >910           JSR   TRANSFR1   
00CE44: 07          >911           DFB   COUTC       ;code
00CE45: 68          >912           PLA              
00CE46: 20 AE CF    >913           JSR   TRANSFR1   ;PRINT ADDRS
00CE49: 37          >914           DFB   PRBYTEC     ;code
00CE4A: 68          >915           PLA              
00CE4B: 20 AE CF    >916           JSR   TRANSFR1   
00CE4E: 37          >917           DFB   PRBYTEC     ;code
00CE4F: A9 AE       >918           LDA   #"."       
00CE51: 20 AE CF    >919           JSR   TRANSFR1   ;PRINT "."
00CE54: 07          >920           DFB   COUTC       ;code
00CE55: 68          >921           PLA              
00CE56: 20 AE CF    >922           JSR   TRANSFR1   ;PRINT NUMBER
00CE59: 37          >923           DFB   PRBYTEC     ;code
00CE5A: 68          >924           PLA              
00CE5B: 20 AE CF    >925           JSR   TRANSFR1   
00CE5E: 37          >926           DFB   PRBYTEC     ;code
00CE5F: 60          >927           RTS              
                    >928  
00CE60: 20 B8 CD    >929  DISHB    JSR   WRINIT1    
00CE63: B9 1C C8    >930  :MORE    LDA   MSGHARDB,Y ;"HARD BREAKPOINT"
00CE66: 20 C2 CD    >931           JSR   WRITECK1   
00CE69: 90 F8 =CE63 >932           BCC   :MORE      
                    >933  
00CE6B: AD 39 C8    >934  DSPHBP   LDA   IERBUFF     ;GET IER BUFFER
00CE6E: 29 10       >935           AND   #%00010000 ;STRIP ALL BUT CB1 FLAG
00CE70: F0 1B =CE8D >936           BEQ   HARDBOFF   ;DISABLED
00CE72: AD 2B C9    >937           LDA   HARDPBR     ;BANK #
00CE75: 20 AE CF    >938           JSR   TRANSFR1   
00CE78: 37          >939           DFB   PRBYTEC    
00CE79: A9 AF       >940           LDA   #"/"       
00CE7B: 20 AE CF    >941           JSR   TRANSFR1   ;PRINT "/"
00CE7E: 07          >942           DFB   COUTC       ;code
00CE7F: AD 10 C8    >943           LDA   VIAORB     
00CE82: 20 AE CF    >944           JSR   TRANSFR1   ;PRINT HI BYTE OF ADDRESS
00CE85: 37          >945           DFB   PRBYTEC     ;CODE
00CE86: AD 01 C8    >946           LDA   VIAORA     
00CE89: 20 AE CF    >947           JSR   TRANSFR1   ;PRINT LOW BYTE OF ADDRESS
00CE8C: 37          >948           DFB   PRBYTEC     ;CODE
                    >949  HARDBOFF                  
00CE8D: 60          >950           RTS              
                    >951  
                    >952  ***** MUST BE ABOVE $CF00 *****
                    >953  * DISPLAY INVALID BREAKPOINT MESSAGE
                    >954  
                    >955  DISINVBP                  
00CE8E: 20 B8 CD    >956           JSR   WRINIT1    
00CE91: B9 00 C8    >957  :MORE    LDA   MSGINVBP,Y ;GET CHAR
00CE94: 20 C2 CD    >958           JSR   WRITECK1   ;DISPLAY
00CE97: 90 F8 =CE91 >959           BCC   :MORE      
00CE99: 60          >960           RTS              
                    >961  
                    >962  ** CONVERT THE DECIMAL NUMBER IN LETTER 3,2,1 TO HEX
                    >963  
00CE9A: 8E 41 C8    >964  DECHEX   STX   XBUFF      
00CE9D: A2 02       >965           LDX   #2         
                    >966  :LOADDEC                  
00CE9F: BD 2A C8    >967           LDA   LETTER1,X  ;LETTER 1,2,3 TO
00CEA2: 9D 31 C8    >968           STA   DECIMAL1,X ;DECIMAL 1,2,3
00CEA5: CA          >969           DEX              
00CEA6: 10 F7 =CE9F >970           BPL   :LOADDEC   
00CEA8: 20 02 CF    >971           JSR   CLRLETER   ;LETTER 1,2,3 TO 0
00CEAB: AE 33 C8    >972           LDX   DECIMAL3   ;M.S. 2 DIGITS
00CEAE: F0 10 =CEC0 >973           BEQ   :TRYDEC2   
00CEB0: A9 10       >974  :DEC3    LDA   #$10        ;ADD 10,000 DEC
00CEB2: 20 E2 CE    >975           JSR   ADDL1       ;
00CEB5: A9 27       >976           LDA   #$27        ;IN HEX FORM $2710
00CEB7: 18          >977           CLC              
00CEB8: 20 EB CE    >978           JSR   ADDL2      
00CEBB: 20 FA CE    >979           JSR   SUBD1      
00CEBE: D0 F0 =CEB0 >980           BNE   :DEC3       ;MORE 10,000
                    >981  :TRYDEC2                  
00CEC0: AE 32 C8    >982           LDX   DECIMAL2   
00CEC3: F0 0A =CECF >983           BEQ   :TRYDEC1   
00CEC5: A9 64       >984  :DEC2    LDA   #$64       
00CEC7: 20 E2 CE    >985           JSR   ADDL1      
00CECA: 20 FA CE    >986           JSR   SUBD1      
00CECD: D0 F6 =CEC5 >987           BNE   :DEC2      
                    >988  :TRYDEC1                  
00CECF: AE 31 C8    >989           LDX   DECIMAL1   
00CED2: F0 0A =CEDE >990           BEQ   DHRTS      
00CED4: A9 01       >991  :DEC1    LDA   #1         
00CED6: 20 E2 CE    >992           JSR   ADDL1      
00CED9: 20 FA CE    >993           JSR   SUBD1      
00CEDC: D0 F6 =CED4 >994           BNE   :DEC1      
00CEDE: AE 41 C8    >995  DHRTS    LDX   XBUFF       ;RESTORE
00CEE1: 60          >996           RTS              
                    >997  
00CEE2: 18          >998  ADDL1    CLC              
00CEE3: 6D 2A C8    >999           ADC   LETTER1    
00CEE6: 8D 2A C8    >1000          STA   LETTER1    
00CEE9: A9 00       >1001          LDA   #0         
00CEEB: 6D 2B C8    >1002 ADDL2    ADC   LETTER2    
00CEEE: 8D 2B C8    >1003          STA   LETTER2    
00CEF1: A9 00       >1004          LDA   #0         
00CEF3: 6D 2C C8    >1005          ADC   LETTER3    
00CEF6: 8D 2C C8    >1006          STA   LETTER3    
00CEF9: 60          >1007          RTS              
                    >1008 
00CEFA: 8A          >1009 SUBD1    TXA              
00CEFB: F8          >1010          SED              
00CEFC: 38          >1011          SEC              
00CEFD: E9 01       >1012          SBC   #1         
00CEFF: D8          >1013          CLD              
00CF00: AA          >1014          TAX              
00CF01: 60          >1015          RTS              
                    >1016 
                    >1017 CLRLETER                  
00CF02: A9 00       >1018          LDA   #0         
00CF04: 8D 2A C8    >1019          STA   LETTER1    
00CF07: 8D 2B C8    >1020          STA   LETTER2    
00CF0A: 8D 2C C8    >1021          STA   LETTER3    
00CF0D: 60          >1022          RTS              
                    >1023 
                    >1024 * SWAP LETTER 1,2,3 WITH LETTER 4,5,6
                    >1025 
00CF0E: 8E 41 C8    >1026 SWAPLET  STX   XBUFF      
00CF11: 8C 3F C8    >1027          STY   YBUFF      
00CF14: A2 02       >1028          LDX   #2         
00CF16: BD 2A C8    >1029 :SWAP    LDA   LETTER1,X  
00CF19: BC 2D C8    >1030          LDY   LETTER4,X  
00CF1C: 9D 2D C8    >1031          STA   LETTER4,X  
00CF1F: 98          >1032          TYA              
00CF20: 9D 2A C8    >1033          STA   LETTER1,X  
00CF23: CA          >1034          DEX              
00CF24: 10 F0 =CF16 >1035          BPL   :SWAP      
00CF26: AC 3F C8    >1036          LDY   YBUFF      
00CF29: AE 41 C8    >1037          LDX   XBUFF      
00CF2C: 60          >1038          RTS              
                    >1039 
                    >1040 ********* SAVE THE ACC,X AND P REGISTERS ********
                    >1041 
                    >1042 SAVEAXP1                  
00CF2D: 08          >1043          PHP              ;SAVE STATUS
00CF2E: 8E 05 C9    >1044          STX   XSAVESEG   
00CF31: 8D 04 C9    >1045          STA   ASAVESEG   
00CF34: 68          >1046          PLA              ;GET STATUS
00CF35: 8D 06 C9    >1047          STA   PSAVESEG   ;SAVE
00CF38: 60          >1048          RTS              
                    >1049 
                    >1050 ******** RESTORE THE ACC,X AND P REGISTERS *******
                    >1051 
                    >1052 RESTAXP1                  
00CF39: AE 05 C9    >1053          LDX   XSAVESEG   
00CF3C: AD 06 C9    >1054          LDA   PSAVESEG   
00CF3F: 48          >1055          PHA              
00CF40: AD 04 C9    >1056          LDA   ASAVESEG   
00CF43: 28          >1057          PLP              
00CF44: 60          >1058          RTS              
                    >1059 
                    >1060 ***** GLOBAL SUBROUTINES IN THIS SEGMENT *****
                    >1061 
                    >1062 SUBTABL1                  
                    >1063 
            =0101   >1064 GETCHRC  EQU   *-SUBTABL1*4+1+$100 
00CF45: F2 CC       >1065          DA    GETCHR-1   
                    >1066 
            =0109   >1067 CHKREADC EQU   *-SUBTABL1*4+1+$100 
00CF47: FE CC       >1068          DA    CHKREAD-1  
                    >1069 
            =0111   >1070 CHKREADAC EQU  *-SUBTABL1*4+1+$100 
00CF49: 00 CD       >1071          DA    CHKREADA-1 
                    >1072 
            =0119   >1073 DSMEMCOLC EQU  *-SUBTABL1*4+1+$100 
00CF4B: BC CC       >1074          DA    DSMEMCOL-1 
                    >1075 
            =0121   >1076 DSPBRKC  EQU   *-SUBTABL1*4+1+$100 
00CF4D: 0F CE       >1077          DA    DSPBRK-1   
                    >1078 
            =0129   >1079 DSPHBPC  EQU   *-SUBTABL1*4+1+$100 
00CF4F: 6A CE       >1080          DA    DSPHBP-1   
                    >1081 
                    >1082 *****************************************
                    >1083 *  SEGMENT CROSSOVER AREA  *
                    >1084 *****************************************
                    >1085 
            =004C   >1087 S1END    =     $CF9D-*    
                    >1088          do    nolist     
                    >1089          LST   OFF        
                    >1090          fin              
                    >1091          ERR   *-1/$CF9D  
00CF51: FF FF FF FF >1092          DS    $CF9D-*,$FF 
                    >1093 
00CF9D: 20 2D CF    >1094 MAIN11   JSR   SAVEAXP1   ;COME HERE TO TRANSFER TO SEGMENT5 DIRECTLY
00CFA0: AE 23 C8    >1095          LDX   SLOTN0     
00CFA3: A9 05       >1096          LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >1097          STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 39 CF    >1098          JSR   RESTAXP1   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >1099          RTS              ;GOTO TO COMMAND IN THIS SEGMENT
00CFAC: EA          >1100          NOP              
00CFAD: EA          >1101          NOP              ;MATCH LENGTH WITH SEGMENT 5
                    >1102 
                    >1103 * TRANSFER TO OTHER SEGMENTS
                    >1104 
                    >1105 TRANSFR1                  
                    >1106 
00CFAE: 20 2D CF    >1107          JSR   SAVEAXP1   
00CFB1: 68          >1108          PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >1109          CLC              
00CFB3: 69 01       >1110          ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >1111          STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >1112          PLA              
00CFB9: 69 00       >1113          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1114          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1115          PHA              
00CFBF: AD DE C9    >1116          LDA   TEMPSEG    
00CFC2: 48          >1117          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 01       >1118          LDA   #1          ;CURRENT SEG #
00CFC5: 48          >1119          PHA              
00CFC6: 20 DD C9    >1120          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1121          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1122          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1123          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1124          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1125 * NEW SEGMENT
00CFD4: A9 CF       >1126          LDA   #>RETURN1  ;WHERE TO RETURN TO
00CFD6: 48          >1127          PHA              
00CFD7: A9 ED       >1128          LDA   #RETURN1   
00CFD9: 48          >1129          PHA              
00CFDA: AD 44 C8    >1130          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1131          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1132          LSR              
00CFE0: 4A          >1133          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1134 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1135          TAX              
00CFE2: BD 46 CF    >1136          LDA   SUBTABL1+1,X ;HI BYTE FIRST
00CFE5: 48          >1137          PHA              
00CFE6: BD 45 CF    >1138          LDA   SUBTABL1,X 
00CFE9: 48          >1139          PHA              
                    >1140 
00CFEA: 20 39 CF    >1141          JSR   RESTAXP1   ;RESTORE REGISTERS
00CFED: 60          >1142          RTS              ;USE RTS TO GOTO SUB
                    >1143 
                    >1144 * RETURN HERE FROM SUBROUTINE
                    >1145 
            =CFED   >1146 RETURN1  EQU   *-1        
00CFEE: 20 2D CF    >1147          JSR   SAVEAXP1   
00CFF1: 68          >1148          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1149          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1150          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 39 CF    >1151          JSR   RESTAXP1   
00CFFB: 60          >1152          RTS              ;RETURN TO CALLING PROGRAM
                    >1153 
00CFFC: FF FF FF FF >1154          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     23            PUT   SEG2       
                    >2    *********************************
                    >3    *  SEGTWOFONE
                    >4    *********************************
                    >5    
                    >6             ORG   $C800       ;CODE RUNS HERE
                    >7    
                    >8    * THIS SPACE IS SHARED WITH THE VIA AND THE RAM.
                    >9    
                    >10   *************** MESSAGES *************
                    >11   
                    >12   * THE FOLLOWING STRING IS USED FOR DISPLAYING REGISTER LABELS.
                    >13   
00C800: C1 BD       >14   MSGREGA  ASC   "A="       
00C802: 84          >15            DFB   EOT        
00C803: A0 D8 BD    >16            ASC   " X="      
00C806: 84          >17            DFB   EOT        
00C807: A0 D9 BD    >18            ASC   " Y="      
00C80A: 84          >19            DFB   EOT        
00C80B: A0 D3 BD    >20            ASC   " S="      
00C80E: 84          >21            DFB   EOT        
00C80F: A0 CD BD    >22            ASC   " M="      
00C812: 84          >23            DFB   EOT        
00C813: A0 CC BD    >24            ASC   " L="      
00C816: 84          >25            DFB   EOT        
00C817: A0 D0 BD    >26            ASC   " P="      
00C81A: 84          >27            DFB   EOT        
                    >28   
                    >29   *THE FOLLOWING STRING IS USED FOR DISPLAYING THE STATUS FLAGS.
                    >30   
00C81B: CE D6 B1 C2 >31   FLAGS    ASC   "NV1BDIZC" 
                    >32   
                    >33   * MESSAGE "BREAKPOINT"
                    >34   
                    >35   MSGBREAK                  
00C823: AA AA A0 C2 >36            ASC   "** BREAK **" 
00C82E: 8D          >37            DFB   CR         
00C82F: 84          >38            DFB   EOT        
                    >39   
                    >40   *********************************
                    >41   * THE FOLLOWING ROUTINES ARE RUN*
                    >42   * FROM THE CARDS I/O SPACE.     *
                    >43   *********************************
                    >44   
                    >45   CXONTFR                   
                    >46            ORG   $C080      
                    >47   
                    >48   CXONLOAD                  
                    >49   CXONRTI                   
00C080: 8D 07 C0    >50            STA   CXON        ;CXROM ON
                    >51   CXOKLOAD                  
                    >52   CXOKRTI                   
00C083: CD 00 C1    >53            CMP   $C100       ;ENABLE ACTIVE SLOT, MODIFIED BY ZPAGSAVE
                    >54   
00C086: EA          >55            NOP              ;SET UP DESIRED ROUTINE BEFORE CALLING
00C087: EA          >56            NOP              ;LDA LOWADD,Y; STA LOWADD,Y OR
00C088: EA          >57            NOP              ;PLP, PHP, RTI
                    >58   
00C089: 8D 06 C0    >59            STA   SLOTROM     ;CXROM OFF
00C08C: 60          >60            RTS              
                    >61   
                    >62   * USED BY REAL TIME COMMAND
                    >63   RTVECTOR                  
00C08D: 00          >64            BRK              ;USE BREAK HANDLER TO GOTO EXT 
                    >65   
                    >66   **** END ROUTINES IN I/O SPACE ***
                    >67   
                    >68            ORG              
                    >69   
                    >70   *--------------------
            =C83E   >71   MSGMODE  EQU   *          
00C83E: 8D          >72            DFB   CR         
00C83F: AD AD AD A0 >73            ASC   "--- Mode of Operation ---" 
00C858: 8D 8D       >74            DFB   CR,CR      
                    >75   
00C85A: D4 E5 F8 F4 >76            ASC   "Text screen save" 
00C86A: 8D          >77            DFB   CR         
00C86B: B1 BD EF EE >78            ASC   "1=on  2=off" 
00C876: 84          >79            DFB   EOT        
                    >80   
00C877: 8D          >81            DFB   CR         
00C878: C3 D0 D5    >82            ASC   "CPU"      
00C87B: 8D          >83            DFB   CR         
00C87C: B1 BD B6 B5 >84            ASC   "1=6502  2=65C02  3=65802" 
00C894: 84          >85            DFB   EOT        
                    >86   
00C895: 8D          >87            DFB   CR         
00C896: C9 AF CF A0 >88            ASC   "I/O slot #" 
00C8A0: 8D          >89            DFB   CR         
00C8A1: B1 BA EF F5 >90            ASC   "1:out  2:in/out  3:normal" 
00C8BA: 84          >91            DFB   EOT        
                    >92   
                    >93   MSGMODE2                  
00C8BB: 8D          >94            DFB   CR         
00C8BC: C5 EE F4 E5 >95            ASC   "Enter <"  ;put current setting in brackets
00C8C3: 84          >96            DFB   EOT        
00C8C4: BE A0 BA    >97            ASC   "> :"      
00C8C7: 84          >98            DFB   EOT        
                    >99   
                    >100  *********************************
                    >101  * THE FOLLOWING ROUTINES ARE
                    >102  * TRANSFERED INTO EXT RAM SEG0
                    >103  * IN THIS SAME ADDRESS SPACE.
                    >104  * THEY ARE RUN FROM ADDRESSES
                    >105  * $FFA0-$FFXX
                    >106  *********************************
                    >107  * ANY $C8 THAT APPEARS IN THIS
                    >108  * CODE IS CONVERTED TO $CN BY
                    >109  * THE ROMTORAM LOAD ROUTINE
                    >110  * SO THE EXT WILL WORK FROM ANY
                    >111  * SLOT.
                    >112  
                    >113  DATATFR                   
                    >114           ORG   $FFA0      
                    >115  
00FFA0: 20 20       >116  DATACHK  HEX   2020       
                    >117  
00FFA2: 20 D5 FF    >118  IRQRAM8  JSR   CXOFF       ;CXROM OFF
00FFA5: 08          >119           PHP              ;SAVE CX STATUS
00FFA6: 4C 39 C8    >120           JMP   IRQJUMP     ;GOTO SLOT SPACE
                    >121  
00FFA9: 20 D5 FF    >122  NMIRAM8  JSR   CXOFF      
00FFAC: 08          >123           PHP              
00FFAD: 4C 27 C8    >124           JMP   NMIJUMP     ;GOTO SLOT SPACE
                    >125  
                    >126  NMIRAM16                  
00FFB0: 20 BE FF    >127           JSR   SET8BIT     ;SET 8 BIT DATA, CXROM OFF
00FFB3: 08          >128           PHP              ;SAVE CXROM STATUS
00FFB4: 4C 2D C8    >129           JMP   NMI816      ;SLOT SPACE
                    >130  
                    >131  BRKRAM16                  
00FFB7: 20 BE FF    >132           JSR   SET8BIT    
00FFBA: 08          >133           PHP              
00FFBB: 4C 33 C8    >134           JMP   BREAK816   ;SLOT SPACE
                    >135  
00FFBE: 48          >136  SET8BIT  PHA              ;SAVE 1 OR 2 BYTES
00FFBF: 08          >137           PHP              ;PUSH 1 BYTE
00FFC0: 08          >138           PHP              ;PUSH 1 BYTE
00FFC1: 68          >139           PLA              ;PULL 1 OR 2 BYTES
00FFC2: 2C A0 FF    >140           BIT   DATACHK    
00FFC5: F0 04 =FFCB >141           BEQ   DATA16      ;16 BIT DATA
                    >142  *8 BIT DATA
00FFC7: 68          >143           PLA              ;REMOVE EXTRA PHP
00FFC8: 68          >144           PLA              ;GET ACC
00FFC9: 80 0A =FFD5 >145           BRA   CXOFF      ;BRA is OK here
                    >146  
                    >147  * 16 BIT DATA
                    >148  
            =FFCB   >149  DATA16   EQU   *          
00FFCB: 09 20       >150           ORA   #$20       
00FFCD: 00          >151           HEX   00          ;RUNS AS ORA #$0020
00FFCE: 48          >152           PHA              ;PUSH 2 BYTES
00FFCF: 28          >153           PLP              ;SET 8 BIT DATA MODE
00FFD0: 68          >154           PLA              ;REMOVE EXTRA BYTE
00FFD1: 68          >155           PLA              ; LOW BYTE ACC
00FFD2: EB          >156           XBA              
00FFD3: 68          >157           PLA              ;HI BYTE ACC
00FFD4: EB          >158           XBA              ;TO HI BYTE
                    >159  
00FFD5: 2C 15 C0    >160  CXOFF    BIT   CXFLAG      ;GET STATUS OF CXROM
00FFD8: 8D 06 C0    >161           STA   SLOTROM     ;TURN OFF CXROM
00FFDB: D8          >162           CLD              
00FFDC: 60          >163           RTS              
                    >164  
                    >165           ORG              
                    >166  
                    >167  ****************************************
                    >168  * THIS POINT MUST BE $CA00 OR ABOVE.
                    >169  ****************************************
                    >170  
00C905: FF FF FF FF >171           DS    $CA00-*,$FF 
                    >172  
                    >173  * IF THE ROOM IS NEEDED, PUT CODE HERE AND JUMP TO IT
                    >174  * FROM OTHER SEGMENTS.
                    >175  
                    >176  MAINSEG2                  
                    >177  
                    >178  * REPLACE THE ORIGINAL INSTRUCTION WITH A BRK COMMAND
                    >179  * SET CARRY IF WE HAVE A BREAK THERE ALREADY
                    >180  
                    >181  PUTBREAK                  
00CA00: 20 2C CE    >182           JSR   VALIDAD     ;ALREADY HAVE A BRK THERE?,PUT Y IN YBUFF
00CA03: 30 03 =CA08 >183           BMI   PUTBRK2     ;IF NO
00CA05: 20 3B CD    >184           JSR   REPLACE     ;IF YES, REMOVE OLD BRK
00CA08: AD 30 C8    >185  PUTBRK2  LDA   SBTYPE      ;GET SB TYPE
00CA0B: C9 C9       >186           CMP   #"I"        ;IS IT IMPLIED
00CA0D: F0 29 =CA38 >187           BEQ   UPDATE      ;IF YES
                    >188  
00CA0F: AD 2A C8    >189           LDA   LETTER1    
00CA12: 8D 87 C8    >190           STA   LOWADD      ;SETUP POINTER
00CA15: AD 2B C8    >191           LDA   LETTER2    
00CA18: 8D 88 C8    >192           STA   HIADD      
00CA1B: AD 2C C8    >193           LDA   LETTER3    
00CA1E: 8D 34 C8    >194           STA   PBRADD      ;BANK #
                    >195  
00CA21: A0 00       >196           LDY   #0         
00CA23: 20 AE CF    >197           JSR   TRANSFR2   ;READ DATA AT BREAKPOINT ADDRESS
00CA26: 00          >198           DFB   LDAINDYC   ;CODE
00CA27: 8D 29 C8    >199           STA   DATABRK     ;SAVE ORIG DATA
00CA2A: 98          >200           TYA              ;LOAD ACC WITH 00
00CA2B: 20 AE CF    >201           JSR   TRANSFR2   ;STORE BREAK
00CA2E: 08          >202           DFB   STAINDYC   ;CODE
00CA2F: 20 AE CF    >203           JSR   TRANSFR2   ;VERIFY THAT LOCATION WAS RAM, SET Z BIT IF OK
00CA32: 00          >204           DFB   LDAINDYC   ;CODE
00CA33: D0 4B =CA80 >205           BNE   PUTDONE     ;ERROR, "NOT RAM"
00CA35: EE FC C8    >206           INC   REALBRK     ;COUNT REAL BREAKS
                    >207  
                    >208  * UPDATE THE BREAKPOINT LIST.
                    >209  
00CA38: AC FD C8    >210  UPDATE   LDY   POINT       ;BRK STACK POINTER
00CA3B: 8E 41 C8    >211           STX   XBUFF       ;SAVE
00CA3E: A2 07       >212           LDX   #7         
00CA40: BD 29 C8    >213  :LOOP    LDA   DATABRK,X  ;BRK STACK INFO
00CA43: 48          >214           PHA              ;ON SYSTEM STACK
00CA44: CA          >215           DEX              
00CA45: 10 F9 =CA40 >216           BPL   :LOOP      
                    >217  
00CA47: AE 23 C8    >218           LDX   SLOTN0     
                    >219  ****************************************
                    >220  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >221  ****************************************
00CA4A: A9 62       >222           LDA   #%01100010 ;RAM6, ROM2
00CA4C: 9D 80 C0    >223           STA   SEGMBASE,X 
                    >224  * PULL BRK INFO OFF SYSTEM STACK AND PUT IN BRK STACK
00CA4F: 68          >225           PLA              
00CA50: 99 C8 C9    >226           STA   BRKDATA,Y  
00CA53: 68          >227           PLA              
00CA54: 99 CE C8    >228           STA   BRKLOW,Y   
00CA57: 68          >229           PLA              
00CA58: 99 9C C8    >230           STA   BRKHI,Y    
00CA5B: 68          >231           PLA              
00CA5C: 99 6A C8    >232           STA   BRKPBR,Y   
00CA5F: 68          >233           PLA              
00CA60: 99 32 C9    >234           STA   BRKTGLOW,Y 
00CA63: 99 96 C9    >235           STA   BRKPASLO,Y 
00CA66: 68          >236           PLA              
00CA67: 99 00 C9    >237           STA   BRKTGHI,Y  
00CA6A: 99 64 C9    >238           STA   BRKPASHI,Y 
00CA6D: 68          >239           PLA              ;SKIP LETTER6
00CA6E: 68          >240           PLA              
00CA6F: 99 38 C8    >241           STA   BRKTYPE,Y  
                    >242  ****************************************
                    >243  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >244  ****************************************
00CA72: A9 02       >245           LDA   #%00000010 ;RAM0, ROM2
00CA74: 9D 80 C0    >246           STA   SEGMBASE,X 
00CA77: C8          >247           INY              
00CA78: 8C FD C8    >248           STY   POINT       ;UPDATE BRK STACK POINTER
00CA7B: AE 41 C8    >249           LDX   XBUFF       ;RESTORE
00CA7E: A9 00       >250           LDA   #0          ;SET Z BIT
00CA80: 60          >251  PUTDONE  RTS              
                    >252  
                    >253  * ----------------------------------
                    >254  * INITIALIZE MEMLOW & MEMHI & DISREG
                    >255  
                    >256  INITDISR                  
00CA81: AD 1B C8    >257           LDA   PCLO       
00CA84: 8D 35 C8    >258           STA   MEMLOW      ;UPDATE THE MEMORY POINTER
00CA87: AD 1C C8    >259           LDA   PCHI       
00CA8A: 8D 36 C8    >260           STA   MEMHI      
00CA8D: AD 1D C8    >261           LDA   PBR         ;GET CURRENT BANK
00CA90: 8D 5E C9    >262           STA   MEMPBR     
                    >263  
                    >264  * THE FOLLOWING SUBROUTINE DISPLAYS THE CONTENTS OF THE
                    >265  * REGISTERS AND DISASSEMBLES THE CURRENT INSTRUCTION.
                    >266  * RETURNS WITH C=1 IF AT A BREAKPOINT
                    >267  
                    >268  *NOTE, GOT TO DO THIS THE HARD WAY SO IT WORKS WITH PRINTERS,
                    >269  * DUMB TERMS, ETC.
                    >270  
00CA93: 20 29 CE    >271           JSR   VALIDPC     ;IS THE INSTRUCTION OUR BREAK
00CA96: 30 35 =CACD >272           BMI   NOTBREAK   ;NOT OURS OR NOT BREAK
                    >273  *IS BREAK
00CA98: 20 46 CB    >274           JSR   DISBREAK   ;DISPLAY "BREAKPOINT"
00CA9B: AC 3F C8    >275           LDY   YBUFF       ;RESTORE AFTER WRITE
00CA9E: 20 3B CD    >276           JSR   REPLACE     ;PUT ORIG. INST BACK IN
00CAA1: 8D 30 C8    >277           STA   SBTYPE      ;TYPE OF BRK REPLACED
00CAA4: C9 C9       >278           CMP   #"I"        ;WAS IT IMPLIED BRK ?
00CAA6: F0 03 =CAAB >279           BEQ   :DISP       ;IF YES
00CAA8: EE FC C8    >280           INC   REALBRK     ;REAL BRK COUNTER
00CAAB: 20 E6 CA    >281  :DISP    JSR   DISREG2     ;DISASSEMBLE AND DISPLAY
00CAAE: AD 30 C8    >282           LDA   SBTYPE     
00CAB1: C9 C9       >283           CMP   #"I"        ;WAS IT IMPLIED BRK ?
00CAB3: F0 06 =CABB >284           BEQ   :INC        ;IF YES
00CAB5: A9 00       >285           LDA   #0         
00CAB7: A8          >286           TAY              
00CAB8: 20 6A CC    >287           JSR   STAPCIY     ;PUT REAL BRK BACK IN
00CABB: EE FD C8    >288  :INC     INC   POINT       ;POINT TO OLD BRK INFO
00CABE: AC 3F C8    >289           LDY   YBUFF       ;RESTORE Y
                    >290  
00CAC1: 20 AE CF    >291  UPDBRKW  JSR   TRANSFR2   ;UPDATE BRK WINDOW
00CAC4: BF          >292           DFB   DISBRKWC   ;code
00CAC5: 4E A3 C8    >293           LSR   BRKWFLG     ;CLEAR FLAG
                    >294  
00CAC8: 20 F2 CC    >295           JSR   WINDDR      ;SET DR WINDOW
00CACB: 38          >296           SEC              ;INDICATES A BRK
00CACC: 60          >297           RTS              ;LEAVE
                    >298  
                    >299  * NOT OUR BREAK
                    >300  NOTBREAK                  
                    >301  
00CACD: 20 E6 CA    >302           JSR   DISREG2    
                    >303  
                    >304  * DOES THE BRK WINDOW NEED UPDATING ?
00CAD0: 2C A3 C8    >305           BIT   BRKWFLG    
00CAD3: 10 03 =CAD8 >306           BPL   :NOBRK      ;IF NO
00CAD5: 20 C1 CA    >307           JSR   UPDBRKW     ;IF YES
00CAD8: 18          >308  :NOBRK   CLC              ;NO BRK
00CAD9: 60          >309           RTS              ;RETURN
                    >310  
00CADA: 20 88 CC    >311  WRITREG  JSR   WRITMOR2   
00CADD: B9 00 C8    >312  :MORE    LDA   MSGREGA,Y  ;GET CHAR
00CAE0: 20 8D CC    >313           JSR   WRITECK2   ;DISPLAY
00CAE3: 90 F8 =CADD >314           BCC   :MORE      
00CAE5: 60          >315           RTS              
                    >316  
                    >317  *NOTE ALL REGISTER MESSAGES MUST BE CONSECUTIVE
                    >318  
00CAE6: A2 00       >319  DISREG2  LDX   #0         
00CAE8: A0 00       >320           LDY   #0         
00CAEA: 20 DA CA    >321  NEXTREG  JSR   WRITREG    
00CAED: BD 11 C8    >322           LDA   ACC,X      
00CAF0: 20 AE CF    >323           JSR   TRANSFR2   ;PRINT REG. CONTENTS
00CAF3: 37          >324           DFB   PRBYTEC     ;CODE
00CAF4: E8          >325           INX              
00CAF5: E8          >326           INX              
00CAF6: E0 0A       >327           CPX   #$A         ;TWO BYTES PER REGISTER FOR 16 BIT
00CAF8: 90 F0 =CAEA >328           BLT   NEXTREG    
                    >329  
                    >330  * PRINT L FLAG. L=0 L/C NOT ENABLED, L=1 L/C BANK1,
                    >331  * L=2 L/C BANK2
                    >332  
00CAFA: 20 DA CA    >333           JSR   WRITREG     ;PRINT "L="
00CAFD: A2 00       >334           LDX   #0         
00CAFF: 2C 12 C0    >335           BIT   $C012       ;L/C OR ROM
00CB02: 10 07 =CB0B >336           BPL   LIS0        ;IF ROM
00CB04: 2C 11 C0    >337           BIT   $C011       ;BANK1 OR 2
00CB07: 10 01 =CB0A >338           BPL   LIS1        ;IF BANK1
00CB09: E8          >339           INX              ;BANK2
00CB0A: E8          >340  LIS1     INX              
00CB0B: 8A          >341  LIS0     TXA              
00CB0C: 20 AE CF    >342           JSR   TRANSFR2   ;PRINT 0,1,OR 2
00CB0F: 47          >343           DFB   PRHEXC      ;CODE
00CB10: 20 DA CA    >344           JSR   WRITREG     ;PRINT "P="
00CB13: AD 1A C8    >345           LDA   STATUS     
00CB16: A2 00       >346           LDX   #0         
                    >347  NEXTFLG2                  
00CB18: 0A          >348           ASL              ;SHIFT N BIT INTO CARRY
00CB19: A8          >349           TAY              ;SAVE A
00CB1A: B0 04 =CB20 >350           BCS   FLAGSET    
00CB1C: A9 AD       >351           LDA   #"-"       
00CB1E: D0 09 =CB29 >352           BNE   NOTFLAG    
00CB20: CD 00 C8    >353  FLAGSET  CMP   $C800       ;DISABLE EXTRAM
00CB23: BD 1B C8    >354           LDA   FLAGS,X     ;LOAD LETTER OF FLAG FROM STRING NVEBDIZC
00CB26: CD 00 CF    >355           CMP   $CF00       ;ENABLE EXT RAM
00CB29: 20 9C CC    >356  NOTFLAG  JSR   COUT2       ;
00CB2C: E8          >357           INX              
00CB2D: 98          >358           TYA              ;RESTORE A
00CB2E: E0 08       >359           CPX   #8          ;FINISHED YET?
00CB30: 90 E6 =CB18 >360           BLT   NEXTFLG2   ;BLO IF NOT FINISHED
00CB32: 20 AE CF    >361           JSR   TRANSFR2   ;CARRIAGE RETURN
00CB35: 0F          >362           DFB   CROUTC      ;CODE
00CB36: 20 AE CF    >363           JSR   TRANSFR2   ;LIST ONE LINE OF DISASSEMBLED CODE
00CB39: 23          >364           DFB   DISASMC     ;CODE
00CB3A: 20 AE CF    >365           JSR   TRANSFR2   ;CHECK FOR ACCESS TO NO ACCESS RANGE
00CB3D: 45          >366           DFB   CKACCESC   ;code
                    >367  
                    >368  * UPDATE FLAG, MEM, EFF & STK WINDOWS
00CB3E: 20 AE CF    >369           JSR   TRANSFR2   ;UPDATE FLAG,MEM,EFF,STACK WINDOWS
00CB41: D7          >370           DFB   DISFMESC   ;code
00CB42: 20 F2 CC    >371           JSR   WINDDR     
00CB45: 60          >372           RTS              
                    >373  
                    >374  * DISPLAY BREAK
                    >375  
                    >376  DISBREAK                  
00CB46: 20 83 CC    >377           JSR   WRINIT2    
00CB49: B9 23 C8    >378  :MORE    LDA   MSGBREAK,Y ;GET CHAR
00CB4C: 20 8D CC    >379           JSR   WRITECK2   ;DISPLAY
00CB4F: 90 F8 =CB49 >380           BCC   :MORE      
00CB51: 60          >381           RTS              
                    >382  
                    >383  ******************************
                    >384  * COMMAND ON
                    >385  ******************************
                    >386  
00CB52: 2C 21 C8    >387  COMDON   BIT   OFFFLAG     ;IS DISPLAY OFF ?
00CB55: 10 09 =CB60 >388           BPL   ONIFON      ;IF NO
00CB57: A9 00       >389           LDA   #0         
00CB59: 8D 21 C8    >390           STA   OFFFLAG     ;ENABLE DISP TO SCREEN
00CB5C: 20 AE CF    >391           JSR   TRANSFR2   ;SAVE SCREEN DISPLAY IF INV ON
00CB5F: 2E          >392           DFB   SAVEDISPC  ;code
00CB60: 20 66 CB    >393  ONIFON   JSR   DISPON      ;DISPLAY ALL WINDOWS
00CB63: 4C 9D CF    >394           JMP   MAIN102    
                    >395  
                    >396  ***** DISPLAY ALL WINDOWS & SET TO WINDDR IF DISPLAY IS ON
                    >397  
00CB66: 2C 21 C8    >398  DISPON   BIT   OFFFLAG     ;IS DISPLAY OFF?
00CB69: 30 1A =CB85 >399           BMI   :ISOFF      ;IF YES SKIP DISPLAY
                    >400  
00CB6B: 4E A4 C8    >401           LSR   WINDFLG     ;indicate windows are on
                    >402  
00CB6E: 20 AE CF    >403           JSR   TRANSFR2   ;SET EXT DISPLAY SWITCHES
00CB71: 87          >404           DFB   SETSCRNC   ;code
00CB72: 20 AE CF    >405           JSR   TRANSFR2   ;DISPLAY BORDERS
00CB75: 4E          >406           DFB   DSPBORDRC  ;code
00CB76: 20 AE CF    >407           JSR   TRANSFR2   ;DISPLAY FLAG,MEM,EFF,STK WINDOWS
00CB79: D7          >408           DFB   DISFMESC   ;code
00CB7A: 20 AE CF    >409           JSR   TRANSFR2   ;DISPLAY BRK WINDOW
00CB7D: BF          >410           DFB   DISBRKWC   ;code
00CB7E: 20 AE CF    >411           JSR   TRANSFR2   ;DISPLAY PROT WINDOW
00CB81: C7          >412           DFB   DISPROTWC  ;code
00CB82: 20 F2 CC    >413           JSR   WINDDR      ;SET DR WINDOW
00CB85: 60          >414  :ISOFF   RTS              
                    >415  
                    >416  ******************************
                    >417  *  COMDOFF - TURN EXT DISPLAY OFF
                    >418  ******************************
                    >419  
00CB86: 2C 21 C8    >420  COMDOFF  BIT   OFFFLAG     ;DISPLAY ALREADY OFF ?
00CB89: 30 09 =CB94 >421           BMI   :ISOFF      ;IF YES
00CB8B: 20 AE CF    >422           JSR   TRANSFR2   ;RESTORE DISPLAY SWITCHES
00CB8E: 16          >423           DFB   RESTTEXTC  ;code
00CB8F: A9 80       >424           LDA   #$80       
00CB91: 8D 21 C8    >425           STA   OFFFLAG     ;DON'T DISPLAY TO SCREEN
00CB94: 4C 9D CF    >426  :ISOFF   JMP   MAIN102    
                    >427  
                    >428  ******************************
                    >429  *  COMMAND MODE 
                    >430  ******************************
                    >431  
            =CB97   >432  COMDMO   EQU   *          
                    >433  
                    >434  *--------------------
                    >435  * Set invisible mode
                    >436  
00CB97: A0 00       >437           LDY   #0          ;init for write
00CB99: 20 26 CC    >438           JSR   DISMODE     ;display 1st mode choice
00CB9C: A9 B1       >439           LDA   #"1"        ;determine current setting
00CB9E: 2C 1E C8    >440           BIT   INVISIBL   
00CBA1: D0 02 =CBA5 >441           BNE   :INVMO     
00CBA3: A9 B2       >442           LDA   #"2"       
00CBA5: 20 32 CC    >443  :INVMO   JSR   GETCHOIC   ;get user's choice
00CBA8: F0 0C =CBB6 >444           BEQ   :CPUTYP     ;if <CR> entered
                    >445  
00CBAA: 8D 1E C8    >446           STA   INVISIBL   ;default to invisible on
00CBAD: C9 B2       >447           CMP   #"2"        ;turn invisible off ?
00CBAF: D0 05 =CBB6 >448           BNE   :CPUTYP     ;if no
00CBB1: A9 00       >449           LDA   #0         
00CBB3: 8D 1E C8    >450           STA   INVISIBL   ;invisible mode off
                    >451  
                    >452  *---------------------
                    >453  * Set CPU type
                    >454  
00CBB6: 20 26 CC    >455  :CPUTYP  JSR   DISMODE     ;display mode choice
00CBB9: A9 B3       >456           LDA   #"3"        ;determine current type
00CBBB: 2C 1F C8    >457           BIT   CMOSFLAG   
00CBBE: 70 08 =CBC8 >458           BVS   :TYPE       ;65802
00CBC0: 30 04 =CBC6 >459           BMI   :TYPC02     ;65C02
00CBC2: A9 B1       >460           LDA   #"1"        ;MUST BE 6502
00CBC4: D0 02 =CBC8 >461           BNE   :TYPE      ;<always>
00CBC6: A9 B2       >462  :TYPC02  LDA   #"2"       
00CBC8: 20 32 CC    >463  :TYPE    JSR   GETCHOIC   ;get user's choice
00CBCB: F0 11 =CBDE >464           BEQ   :TRCBRK     ;if <CR> entered
                    >465  
00CBCD: A2 80       >466           LDX   #%10000000 ;default to 65c02 mode
00CBCF: C9 B1       >467           CMP   #"1"        ;6502 type ?
00CBD1: D0 02 =CBD5 >468           BNE   :CK802      ;if no
00CBD3: A2 00       >469           LDX   #0          ;set 6502 mode
                    >470  
00CBD5: C9 B3       >471  :CK802   CMP   #"3"        ;65802 type ?
00CBD7: D0 02 =CBDB >472           BNE   :SETCPU     ;if no
00CBD9: A2 40       >473           LDX   #%01000000 ;set 65802 mode
                    >474  
00CBDB: 8E 1F C8    >475  :SETCPU  STX   CMOSFLAG   ;set new CPU type
                    >476  
                    >477  *--------------------
                    >478  * Set trace user break mode
                    >479  
                    >480  :TRCBRK                   
00CBDE: A9 00       >481           LDA   #0         
00CBE0: 8D FF C8    >482           STA   RTBRKFLG   ;default to not tracing user breaks
                    >483  
                    >484  *----------------------
                    >485  * Set I/O
                    >486  
00CBE3: 20 26 CC    >487  :IOTYP   JSR   DISMODE     ;display mode choice
00CBE6: A9 B2       >488           LDA   #"2"       
00CBE8: 2C 20 C8    >489           BIT   IOMODE      ;0=NORMAL, BIT7 1=SERIAL, BIT6 1=SLOT1
00CBEB: 30 06 =CBF3 >490           BMI   :IOMOD      ;if serial
00CBED: A9 B1       >491           LDA   #"1"       
00CBEF: 70 02 =CBF3 >492           BVS   :IOMOD      ;if printer
00CBF1: A9 B3       >493           LDA   #"3"        ;if normal
00CBF3: 20 32 CC    >494  :IOMOD   JSR   GETCHOIC   ;get user's choice
00CBF6: F0 24 =CC1C >495           BEQ   MODONE      ;if <CR> entered
                    >496  
00CBF8: C9 B3       >497           CMP   #"3"        ;normal I/O ?
00CBFA: D0 08 =CC04 >498           BNE   :CKSER      ;if no
00CBFC: A9 00       >499           LDA   #0         
00CBFE: 8D 20 C8    >500           STA   IOMODE      ;screen output
00CC01: 4C 52 CB    >501           JMP   COMDON     ;diplay Main screen
                    >502  
00CC04: C9 B2       >503  :CKSER   CMP   #"2"       ;serial I/O ?
00CC06: D0 04 =CC0C >504           BNE   :CKPRINT   ;if no
00CC08: A9 80       >505           LDA   #$80       ;for IOMODE slot #2
00CC0A: D0 06 =CC12 >506           BNE   :SETIO     ;<always>
                    >507  
00CC0C: C9 B1       >508  :CKPRINT CMP   #"1"       ;output to slot #1 ?
00CC0E: D0 0C =CC1C >509           BNE   MODONE     ;if no
00CC10: A9 40       >510           LDA   #$40       ;if slot #1
00CC12: 8D 20 C8    >511  :SETIO   STA   IOMODE      ;$0=NORMAL, BIT7 1=SERIAL, BIT6 1=SLOT1
00CC15: 20 AE CF    >512           JSR   TRANSFR2   ;init slot
00CC18: 5E          >513           DFB   INITPASCC  ;code
00CC19: 4C 86 CB    >514           JMP   COMDOFF    ;turn screen display off
                    >515  
00CC1C: 20 AE CF    >516  MODONE   JSR   TRANSFR2   ;display flag window
00CC1F: A7          >517           DFB   DISFLGWC   ;code
00CC20: 20 F2 CC    >518           JSR   WINDDR      ;set to DR window
00CC23: 4C 9D CF    >519           JMP   MAIN102    
                    >520  
                    >521  ************ DISMODE **************
                    >522  
                    >523  *--------------------------------
                    >524  * Display part of the mode choice menu
                    >525  
00CC26: 20 88 CC    >526  DISMODE  JSR   WRITMOR2   ;write from current Y pointer
00CC29: B9 3E C8    >527  :MORE    LDA   MSGMODE,Y  ;DISPLAY MODE MENU
00CC2C: 20 8D CC    >528           JSR   WRITECK2   
00CC2F: 90 F8 =CC29 >529           BCC   :MORE      
00CC31: 60          >530           RTS              
                    >531  
                    >532  *---------------------
                    >533  * Get user choice, display 'Enter <n> : '
                    >534  
                    >535  GETCHOIC                  
00CC32: 48          >536           PHA              ;save default number
00CC33: 20 83 CC    >537           JSR   WRINIT2    ;write from start of message
00CC36: B9 BB C8    >538  :MORE    LDA   MSGMODE2,Y 
00CC39: 20 8D CC    >539           JSR   WRITECK2   ;display "Enter <"
00CC3C: 90 F8 =CC36 >540           BCC   :MORE      
00CC3E: 68          >541           PLA              ;restore default
00CC3F: 20 9C CC    >542           JSR   COUT2      ;display ACC
00CC42: 20 88 CC    >543           JSR   WRITMOR2   ;write from current Y pointer
00CC45: B9 BB C8    >544  :MORE2   LDA   MSGMODE2,Y ;2nd part of message "> :"
00CC48: 20 8D CC    >545           JSR   WRITECK2   ;display rest of message
00CC4B: 90 F8 =CC45 >546           BCC   :MORE2     
                    >547  
                    >548  * Get mode input
                    >549  
00CC4D: A9 A0       >550           LDA   #$A0        ;SPACE
00CC4F: 8D 32 C9    >551           STA   PROMPT      ;NEW PROMPT
00CC52: 20 AE CF    >552           JSR   TRANSFR2   ;GET INPUT
00CC55: 57          >553           DFB   GETLNC      ;CODE
00CC56: B0 0D =CC65 >554           BCS   :ESC        ;if "esc" key
00CC58: E8          >555           INX              
00CC59: A0 00       >556           LDY   #00        
00CC5B: 20 AE CF    >557           JSR   TRANSFR2   ;GET 1ST CHAR
00CC5E: 01          >558           DFB   GETCHRC     ;CODE
                    >559  
00CC5F: AC 3F C8    >560           LDY   YBUFF        ;restore mode menu pointer
00CC62: C9 8D       >561           CMP   #CR         ;set z bit if <CR> entered
00CC64: 60          >562           RTS              
                    >563  
                    >564  * If "esc" key pressed
00CC65: 68          >565  :ESC     PLA              
00CC66: 68          >566           PLA              ;pull return address off stack
00CC67: 4C 1C CC    >567           JMP   MODONE      ;exit MOde command
                    >568  
                    >569  *--------------------------------
                    >570  * STA AT (PC,Y) 
                    >571  
00CC6A: 48          >572  STAPCIY  PHA              
00CC6B: AD 1D C8    >573           LDA   PBR        
00CC6E: 8D 34 C8    >574           STA   PBRADD     
00CC71: AD 1C C8    >575           LDA   PCHI       
00CC74: 8D 88 C8    >576           STA   HIADD      
00CC77: AD 1B C8    >577           LDA   PCLO       
00CC7A: 8D 87 C8    >578           STA   LOWADD     
00CC7D: 68          >579           PLA              
00CC7E: 20 AE CF    >580           JSR   TRANSFR2   ;STA (LOWADD,Y)
00CC81: 08          >581           DFB   STAINDYC   ;code
00CC82: 60          >582           RTS              
                    >583  
                    >584  ************ WRITE ***********
                    >585  
                    >586  * THIS ROUTINE MUST BE BEFORE $CF00
                    >587  
00CC83: 8C 3F C8    >588  WRINIT2  STY   YBUFF       ;SAVE
00CC86: A0 00       >589           LDY   #0         
                    >590  WRITMOR2                  
00CC88: CD 00 C8    >591           CMP   $C800       ;DISABLE EXTRAM
00CC8B: 18          >592           CLC              
00CC8C: 60          >593           RTS              
                    >594  
                    >595  WRITECK2                  
00CC8D: CD 00 CF    >596           CMP   $CF00      
00CC90: C8          >597           INY              
00CC91: C9 84       >598           CMP   #EOT       
00CC93: F0 06 =CC9B >599           BEQ   WRITDON2   
00CC95: 20 9C CC    >600           JSR   COUT2       ;DISPLAY ON OUTPUT DEVICE
00CC98: 4C 88 CC    >601           JMP   WRITMOR2   
                    >602  WRITDON2                  
00CC9B: 60          >603           RTS              ;ACC CONTAINS LAST CHARACTER DISPLAYED
                    >604  
00CC9C: 20 AE CF    >605  COUT2    JSR   TRANSFR2   ;DISPLAY ON OUTPUT DEVICE
00CC9F: 07          >606           DFB   COUTC       ;code
00CCA0: 60          >607           RTS              
                    >608  
                    >609  ******************************
                    >610  *  COMDQU - QUIT
                    >611  ******************************
                    >612  
                    >613  * Allows entering EXT II as a subroutine, doing your 
                    >614  * debugging and returning to your program.
                    >615  
                    >616  COMDQU                    
                    >617  
                    >618  * RESTORE ALL REGISTERS, DISABLE VIA,
                    >619  * DO AN RTS BACK TO USER
                    >620  
00CCA1: 38          >621           SEC              
00CCA2: B0 01 =CCA5 >622           BCS   NOAST      
                    >623  
                    >624  ******************************
                    >625  *  COMD* - MONITOR
                    >626  ******************************
                    >627  
            =CCA4   >628  COMDAST  EQU   *          
                    >629  
                    >630  * DISABLE VIA,
                    >631  * RESTORE INT VECTORS
                    >632  *
                    >633  * GOTO MONITOR
                    >634  
00CCA4: 18          >635           CLC              
00CCA5: 08          >636  NOAST    PHP              ;SAVE CARRY FLAG
                    >637  
00CCA6: AD FC C8    >638           LDA   REALBRK     ;ANY REAL BRKS IN 
00CCA9: F0 16 =CCC1 >639           BEQ   :NOREALS   ;IF NO
                    >640  * DISPLAY WARNING MESSAGE
00CCAB: 20 83 CC    >641           JSR   WRINIT2    
00CCAE: B9 DA C9    >642  :MORBRK  LDA   MSGREAL,Y  
00CCB1: 20 8D CC    >643           JSR   WRITECK2   ;"**WARNING** REAL BRKS"
00CCB4: 90 F8 =CCAE >644           BCC   :MORBRK    
00CCB6: A2 0A       >645           LDX   #10        
00CCB8: A9 00       >646  :WAIT    LDA   #0         
00CCBA: 20 AE CF    >647           JSR   TRANSFR2   ;DELAY SO MESSAGE CAN BE READ
00CCBD: 7F          >648           DFB   WAITC      
00CCBE: CA          >649           DEX              
00CCBF: 10 F7 =CCB8 >650           BPL   :WAIT      
                    >651  :NOREALS                  
00CCC1: 20 AE CF    >652           JSR   TRANSFR2   ;RESTORE APPLE RAM
00CCC4: 16          >653           DFB   RESTTEXTC  ;CODE
00CCC5: A9 FF       >654           LDA   #$FF       
00CCC7: 8D 0D C8    >655           STA   VIAIFR     
00CCCA: A9 82       >656           LDA   #%10000010 ;ENABLE ONLY BUTTON
00CCCC: 8D 0E C8    >657           STA   VIAIER     
00CCCF: 28          >658           PLP              ;GET SAVED CARRY BIT
00CCD0: AE 17 C8    >659           LDX   STACK       ;USE THIS STACK LOCATION
00CCD3: 9A          >660           TXS              
                    >661  
                    >662  * IF LEAVING WITH "*" COMMAND, DISABLE WRITING TO CARD
00CCD4: A9 DC       >663           LDA   #%11011100 ;CB2 LOW, CB1 POS EDGE, CA2 LOW, CA1 NEG EDGE
00CCD6: 90 02 =CCDA >664           BCC   :SETVIA    
00CCD8: A9 DE       >665           LDA   #%11011110 ;WRITING TO CARD IS OK WHEN QUiting
00CCDA: 8D 0C C8    >666  :SETVIA  STA   VIAPCR     
                    >667  
00CCDD: AE 13 C8    >668           LDX   XREG       
00CCE0: AC 15 C8    >669           LDY   YREG       
00CCE3: AD 1A C8    >670           LDA   STATUS     
00CCE6: 48          >671           PHA              
00CCE7: AD 11 C8    >672           LDA   ACC        
00CCEA: B0 04 =CCF0 >673           BCS   :DORTS      ;COMMAND WAS QUIT
                    >674  
00CCEC: 28          >675           PLP              ;RESTORE STATUS
00CCED: 4C 69 FF    >676           JMP   MONITOR     ;GO TO APPLE MONITOR
                    >677  
                    >678  ********************
                    >679  * RETURN TO USER
                    >680  ********************
00CCF0: 28          >681  :DORTS   PLP              ;RESTORE STATUS
00CCF1: 60          >682           RTS              ;RETURN TO USER
                    >683  
                    >684  
                    >685  *-------------------------------------------------
                    >686  *SET WINDOW FOR DR
                    >687  
                    >688  WINDDR                    
00CCF2: A9 00       >689           LDA   #0         
00CCF4: 8D 55 C9    >690           STA   WINDLEFT   
00CCF7: 8D 57 C9    >691           STA   WINDTOP    
00CCFA: 8D 59 C9    >692           STA   CURSHORZ   ;LEFT EDGE OF WINDOW
00CCFD: A9 29       >693           LDA   #41        
00CCFF: 8D 56 C9    >694           STA   WINDWDTH   
00CD02: A9 18       >695           LDA   #24        
00CD04: 8D 58 C9    >696           STA   WINDBTM    
00CD07: A9 17       >697           LDA   #23        
00CD09: 8D 5A C9    >698           STA   CURSVERT   ;BOTTOM LINE
00CD0C: 20 AE CF    >699           JSR   TRANSFR2   ;SET UP BASL BASH
00CD0F: 8F          >700           DFB   VTABC       ;CODE
00CD10: 60          >701           RTS              
                    >702  
                    >703  * MOVE ROUTINES FROM ROM TO RAM
                    >704  
                    >705  ROMTORAM                  
00CD11: A2 0F       >706           LDX   #15         ;16 BYTES TO MOVE
                    >707  MOVEMORE                  
00CD13: CD 00 C8    >708           CMP   $C800       ;DISABLE EXT RAM
00CD16: BD 30 C8    >709           LDA   CXONTFR,X  ;GET BYTE FROM ROM
00CD19: CD 00 CF    >710           CMP   $CF00       ;ENABLE EXT RAM
00CD1C: 9D 80 C8    >711           STA   $C880,X     ;PUT IN RAM
00CD1F: CA          >712           DEX              
00CD20: 10 F1 =CD13 >713           BPL   MOVEMORE   
00CD22: A2 3C       >714           LDX   #60         ;61 BYTES TO MOVE
                    >715  MOVEMOR2                  
00CD24: CD 00 C8    >716           CMP   $C800       ;DISABLE EXT RAM
00CD27: BD C8 C8    >717           LDA   DATATFR,X  ;GET BYTE FROM ROM
00CD2A: CD 00 CF    >718           CMP   $CF00       ;ENABLE RAM
                    >719  
                    >720  * INITIALIZE THE ROUTINE FOR THIS SLOT
                    >721  * BY REPLACING ALL OCCURANCES OF $C8
                    >722  * WITH $CN.
                    >723  
00CD2D: C9 C8       >724           CMP   #$C8       
00CD2F: D0 03 =CD34 >725           BNE   MOVEMOR3   
00CD31: AD 30 C9    >726           LDA   SLOTCN     
                    >727  MOVEMOR3                  
00CD34: 9D A0 C9    >728           STA   DATACHK-$3600,X ;PUT IN RAM
00CD37: CA          >729           DEX              
00CD38: 10 EA =CD24 >730           BPL   MOVEMOR2   
00CD3A: 60          >731           RTS              
                    >732  
                    >733  * REPLACE THE BREAKPOINT IN THE
                    >734  * PROGRAM WITH THE ORIGINAL INSTRUCTION. REMOVE THE ADDRESS
                    >735  * FROM THE BREAKS BUFFER, AND REORGANIZE THE LIST.
                    >736  * ENTER WITH Y POINTING TO BREAKPOINT.
                    >737  
00CD3B: 98          >738  REPLACE  TYA              
00CD3C: AA          >739           TAX              ;POINTS AT BRK TO REPLACE
00CD3D: AC 23 C8    >740           LDY   SLOTN0     
00CD40: AD FD C8    >741           LDA   POINT       ;BRK STACK POINTER
00CD43: 48          >742           PHA              ;PULLED IN SORTBRK
                    >743  ****************************************
                    >744  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >745  ****************************************
00CD44: A9 62       >746           LDA   #%01100010 ;RAM6, ROM2
00CD46: 99 80 C0    >747           STA   SEGMBASE,Y 
                    >748  
00CD49: BD 38 C8    >749           LDA   BRKTYPE,X  
00CD4C: 8D 13 C8    >750           STA   ACC+2       ;SAVE IN RAM6
00CD4F: C9 C9       >751           CMP   #"I"        ;IMPLIED BRK ?
00CD51: F0 33 =CD86 >752           BEQ   SORTBRK     ;IF YES, STAY RAM6, ROM2
00CD53: BD C8 C9    >753           LDA   BRKDATA,X  ;GET ORIGINAL DATA
00CD56: 48          >754           PHA              
00CD57: BD 6A C8    >755           LDA   BRKPBR,X   
00CD5A: 48          >756           PHA              
00CD5B: BD 9C C8    >757           LDA   BRKHI,X    
00CD5E: 48          >758           PHA              
00CD5F: BD CE C8    >759           LDA   BRKLOW,X   
00CD62: 48          >760           PHA              
                    >761  ****************************************
                    >762  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >763  ****************************************
00CD63: A9 02       >764           LDA   #%00000010 ;RAM0 ROM2
00CD65: 99 80 C0    >765           STA   SEGMBASE,Y 
00CD68: 68          >766           PLA              
00CD69: 8D 87 C8    >767           STA   LOWADD     
00CD6C: 68          >768           PLA              
00CD6D: 8D 88 C8    >769           STA   HIADD      
00CD70: 68          >770           PLA              
00CD71: 8D 34 C8    >771           STA   PBRADD     
00CD74: 68          >772           PLA              ;DATA
00CD75: A0 00       >773           LDY   #0         
00CD77: 20 AE CF    >774           JSR   TRANSFR2   ;REPLACE BRK WITH ORIG. DATA
00CD7A: 08          >775           DFB   STAINDYC   ;code
00CD7B: CE FC C8    >776           DEC   REALBRK     ;DECREMENT REAL BRK COUNT
00CD7E: AC 23 C8    >777           LDY   SLOTN0     
                    >778  ****************************************
                    >779  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >780  ****************************************
00CD81: A9 62       >781           LDA   #%01100010 ;RAM6, ROM2
00CD83: 99 80 C0    >782           STA   SEGMBASE,Y 
                    >783  
                    >784  * SORT THE BRK STACK, SHIFT UP DATA TO FILL GAP
00CD86: 8C 12 C8    >785  SORTBRK  STY   ACC+1       ;SAVE SLOTN0
00CD89: 68          >786           PLA              ;GET BRK STACK POINTER
00CD8A: 8D 11 C8    >787           STA   ACC         ;SAVE IN SEG6
                    >788  
                    >789  * SAVE THE BRK INFO INCASE WE ARE TRACING THIS BREAK
00CD8D: BD 6A C8    >790           LDA   BRKPBR,X   
00CD90: 48          >791           PHA              
00CD91: BD 9C C8    >792           LDA   BRKHI,X    
00CD94: 48          >793           PHA              
00CD95: BD CE C8    >794           LDA   BRKLOW,X   
00CD98: 48          >795           PHA              
00CD99: BD 00 C9    >796           LDA   BRKTGHI,X  
00CD9C: 48          >797           PHA              
00CD9D: BD 32 C9    >798           LDA   BRKTGLOW,X 
00CDA0: 48          >799           PHA              
00CDA1: BD 64 C9    >800           LDA   BRKPASHI,X 
00CDA4: 48          >801           PHA              
00CDA5: BD 96 C9    >802           LDA   BRKPASLO,X 
00CDA8: 48          >803           PHA              
00CDA9: BD C8 C9    >804           LDA   BRKDATA,X  
00CDAC: 48          >805           PHA              
                    >806  
00CDAD: 8A          >807  :NEXT    TXA              
00CDAE: A8          >808           TAY              ;CURRENT BRK Y
00CDAF: E8          >809           INX              ;NEXT BRK X
00CDB0: EC 11 C8    >810           CPX   ACC         ;END OF DATA ON STACK ?
00CDB3: F0 39 =CDEE >811           BEQ   :SORTEND   ;IF YES
00CDB5: BD 38 C8    >812           LDA   BRKTYPE,X  ;SHIFT ALL DATA UP
00CDB8: 99 38 C8    >813           STA   BRKTYPE,Y  
00CDBB: BD 6A C8    >814           LDA   BRKPBR,X   
00CDBE: 99 6A C8    >815           STA   BRKPBR,Y   
00CDC1: BD 9C C8    >816           LDA   BRKHI,X    
00CDC4: 99 9C C8    >817           STA   BRKHI,Y    
00CDC7: BD CE C8    >818           LDA   BRKLOW,X   
00CDCA: 99 CE C8    >819           STA   BRKLOW,Y   
00CDCD: BD 00 C9    >820           LDA   BRKTGHI,X  
00CDD0: 99 00 C9    >821           STA   BRKTGHI,Y  
00CDD3: BD 32 C9    >822           LDA   BRKTGLOW,X 
00CDD6: 99 32 C9    >823           STA   BRKTGLOW,Y 
00CDD9: BD 64 C9    >824           LDA   BRKPASHI,X 
00CDDC: 99 64 C9    >825           STA   BRKPASHI,Y 
00CDDF: BD 96 C9    >826           LDA   BRKPASLO,X 
00CDE2: 99 96 C9    >827           STA   BRKPASLO,Y 
00CDE5: BD C8 C9    >828           LDA   BRKDATA,X  
00CDE8: 99 C8 C9    >829           STA   BRKDATA,Y  
00CDEB: 4C AD CD    >830           JMP   :NEXT      
                    >831  :SORTEND                  
                    >832  
                    >833  * PUT THE INFO FROM THE BRK JUST REPLACED ABOVE THE
                    >834  * THE CURRENT BRK STACK POINT. TO PUT THE BRK BACK IN
                    >835  * SIMPLE INCREMENT THE BREAK STACK POINTER BY 1.
                    >836  
00CDEE: 68          >837           PLA              
00CDEF: 99 C8 C9    >838           STA   BRKDATA,Y  
00CDF2: 68          >839           PLA              
00CDF3: 99 96 C9    >840           STA   BRKPASLO,Y 
00CDF6: 68          >841           PLA              
00CDF7: 99 64 C9    >842           STA   BRKPASHI,Y 
00CDFA: 68          >843           PLA              
00CDFB: 99 32 C9    >844           STA   BRKTGLOW,Y 
00CDFE: 68          >845           PLA              
00CDFF: 99 00 C9    >846           STA   BRKTGHI,Y  
00CE02: 68          >847           PLA              
00CE03: 99 CE C8    >848           STA   BRKLOW,Y   
00CE06: 68          >849           PLA              
00CE07: 99 9C C8    >850           STA   BRKHI,Y    
00CE0A: 68          >851           PLA              
00CE0B: 99 6A C8    >852           STA   BRKPBR,Y   
                    >853  
00CE0E: AD 13 C8    >854           LDA   ACC+2       ;BRKTYPE
00CE11: 99 38 C8    >855           STA   BRKTYPE,Y  
00CE14: 48          >856           PHA              
                    >857  
00CE15: AE 12 C8    >858           LDX   ACC+1       ;SLOTN0
                    >859  ****************************************
                    >860  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >861  ****************************************
00CE18: A9 02       >862           LDA   #%00000010 ;RAM0, ROM2
00CE1A: 9D 80 C0    >863           STA   SEGMBASE,X 
00CE1D: 8C FD C8    >864           STY   POINT       ;NEW BRK STACK POINTER
00CE20: 68          >865           PLA              ;TYPE OF BRK REMOVED
00CE21: 60          >866           RTS              
                    >867  
                    >868  ***********************************
                    >869  * DECREMENT TOGO IF VALID BREAK
                    >870  * TOGOFLG = 0 IF TOGO = 0
                    >871  ***********************************
                    >872  
                    >873  * USE CURRENT PC
                    >874  
00CE22: 20 CC CE    >875  DECTGPC  JSR   PC2LETR     ;LOAD LETTER 3,2,1 WITH PC
                    >876  
00CE25: A9 00       >877  DECTOGO  LDA   #0          ;DEC TOGO FLAG
00CE27: F0 05 =CE2E >878           BEQ   VALID2     
                    >879  
                    >880  ***********************************
                    >881  *CHECK IF ADDRESS IS VALID BREAKPOINT ON LIST.
                    >882  *RETURNS WITH N=1 IF INVALID, Z=1 IF VALID AND REAL BRK
                    >883  * LETTER 3,2,1 MUST CONTAIN THE INSTRUCTION ADDRESS
                    >884  ***********************************
                    >885  
                    >886  * USE CURRENT PC
                    >887  
00CE29: 20 CC CE    >888  VALIDPC  JSR   PC2LETR     ;LOAD LETTER 3,2,1 WITH PC
                    >889  
00CE2C: A9 80       >890  VALIDAD  LDA   #$80        ;DON'T DEC TOGO
00CE2E: 48          >891  VALID2   PHA              ;SAVE TOGO FLAG
00CE2F: A9 80       >892           LDA   #$80       
00CE31: 8D 63 C9    >893           STA   TOGOFLG     ;RESET TOGO FLAG
00CE34: 8C 3F C8    >894           STY   YBUFF       ;SAVE Y
00CE37: 8E 41 C8    >895           STX   XBUFF       ;SAVE X
00CE3A: AC FD C8    >896           LDY   POINT       ;GET BREAKS POINTER
00CE3D: 88          >897           DEY              ;ARE THERE ANY BREAKS ?
00CE3E: 10 03 =CE43 >898           BPL   :BRKS       ;IF YES
00CE40: 68          >899           PLA              ;CLEAN UP STACK
00CE41: 98          >900           TYA              ;SET STATUS FLAGS
00CE42: 60          >901           RTS              ;IF NO
                    >902  
00CE43: C8          >903  :BRKS    INY              
                    >904  
00CE44: AD 2C C8    >905           LDA   LETTER3     ;PBR OF BRK ADDRESS
00CE47: 48          >906           PHA              
00CE48: AD 2B C8    >907           LDA   LETTER2     ;HI BYTE
00CE4B: 48          >908           PHA              
00CE4C: AD 2A C8    >909           LDA   LETTER1     ;LOW BYTE
00CE4F: 48          >910           PHA              
00CE50: AE 23 C8    >911           LDX   SLOTN0     
                    >912  
                    >913  ****************************************
                    >914  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >915  ****************************************
                    >916  
00CE53: A9 62       >917           LDA   #%01100010 ;RAM6, ROM2
00CE55: 9D 80 C0    >918           STA   SEGMBASE,X 
00CE58: 68          >919           PLA              
00CE59: 8D 13 C8    >920           STA   ACC+2       ;STORE IN RAM SEG6
00CE5C: 68          >921           PLA              
00CE5D: 8D 12 C8    >922           STA   ACC+1      
00CE60: 68          >923           PLA              
00CE61: 8D 11 C8    >924           STA   ACC        
00CE64: 68          >925           PLA              ;GET DEC TOGO FLAG
00CE65: 8D 14 C8    >926           STA   ACC+3      
00CE68: A9 80       >927           LDA   #$80       
00CE6A: 8D 15 C8    >928           STA   ACC+4       ;USE THIS AS TOGOFLG
00CE6D: 88          >929  :LOOPLO  DEY              
00CE6E: 30 49 =CEB9 >930           BMI   :LEAVE      ;INVALID N=1
00CE70: AD 13 C8    >931           LDA   ACC+2       ;LOW BYTE
00CE73: D9 CE C8    >932           CMP   BRKLOW,Y   ;MATCH ?
00CE76: D0 F5 =CE6D >933           BNE   :LOOPLO     ;IF NO
                    >934  
00CE78: AD 12 C8    >935           LDA   ACC+1       ;HI BYTE
00CE7B: D9 9C C8    >936           CMP   BRKHI,Y     ;HI BYTES MATCH ?
00CE7E: D0 ED =CE6D >937           BNE   :LOOPLO     ;IF NO
                    >938  
00CE80: AD 11 C8    >939           LDA   ACC         ;PBR BYTE
00CE83: D9 6A C8    >940           CMP   BRKPBR,Y   ;MATCH ?
00CE86: D0 E5 =CE6D >941           BNE   :LOOPLO     ;IF NO, IF VALID FALL THROUGH
                    >942  
00CE88: AD 14 C8    >943           LDA   ACC+3       ;DEC TOGO ?
00CE8B: 30 27 =CEB4 >944           BMI   :CKREAL     ;IF NO
                    >945  
                    >946  * DECREMENT TOGO COUNT
                    >947  
00CE8D: 38          >948           SEC              
00CE8E: B9 32 C9    >949           LDA   BRKTGLOW,Y 
00CE91: E9 01       >950           SBC   #1         
00CE93: 99 32 C9    >951           STA   BRKTGLOW,Y 
00CE96: B9 00 C9    >952           LDA   BRKTGHI,Y  
00CE99: E9 00       >953           SBC   #0         
00CE9B: 99 00 C9    >954           STA   BRKTGHI,Y  
                    >955  
                    >956  * DOES TOGO = 0 ?
00CE9E: D0 14 =CEB4 >957           BNE   :CKREAL     ;TOGO NOT 0
00CEA0: B9 32 C9    >958           LDA   BRKTGLOW,Y 
00CEA3: D0 0F =CEB4 >959           BNE   :CKREAL     ;TOGO NOT 0
                    >960  
                    >961  * ACC = 0
00CEA5: 8D 15 C8    >962           STA   ACC+4       ;TOGO = 0
                    >963  
00CEA8: B9 64 C9    >964           LDA   BRKPASHI,Y 
00CEAB: 99 00 C9    >965           STA   BRKTGHI,Y  ;RESET TOGO
00CEAE: B9 96 C9    >966           LDA   BRKPASLO,Y 
00CEB1: 99 32 C9    >967           STA   BRKTGLOW,Y 
                    >968  
00CEB4: A9 D2       >969  :CKREAL  LDA   #"R"       
00CEB6: D9 38 C8    >970           CMP   BRKTYPE,Y  ;Z=1 IF REAL BRK
00CEB9: 08          >971  :LEAVE   PHP              ;SAVE FLAGS
00CEBA: AD 15 C8    >972           LDA   ACC+4       ;TOGO FLAG
00CEBD: 48          >973           PHA              
                    >974  
                    >975  ****************************************
                    >976  * !!! ALERT !!! SEGMENT DEPENDENT CODE *
                    >977  ****************************************
                    >978  
00CEBE: A9 02       >979           LDA   #%00000010 ;RAM0, ROM2
00CEC0: 9D 80 C0    >980           STA   SEGMBASE,X 
                    >981  
00CEC3: 68          >982           PLA              ;GET TOGO FLAG
00CEC4: 8D 63 C9    >983           STA   TOGOFLG     ;SET FLAG
00CEC7: AE 41 C8    >984           LDX   XBUFF       ;RESTORE X
00CECA: 28          >985           PLP              ;RESTORE FLAGS
                    >986  *ON VALID RETURN Y IS POINTING TO ADDRESS
                    >987  * IN BREAKS BUFFER.
00CECB: 60          >988           RTS              
                    >989  
                    >990  * PUT CURRENT PC INTO LETTER 3,2,1
                    >991  
00CECC: AD 1D C8    >992  PC2LETR  LDA   PBR        
00CECF: 8D 2C C8    >993           STA   LETTER3    
00CED2: AD 1C C8    >994           LDA   PCHI       
00CED5: 8D 2B C8    >995           STA   LETTER2    
00CED8: AD 1B C8    >996           LDA   PCLO       
00CEDB: 8D 2A C8    >997           STA   LETTER1    
00CEDE: 60          >998           RTS              
                    >999  
                    >1000 ****** SAVE THE ACC, X AND P REGISTERS *****
                    >1001 
                    >1002 SAVEAXP2                  
00CEDF: 08          >1003          PHP              ;SAVE STATUS
00CEE0: 8E 05 C9    >1004          STX   XSAVESEG   
00CEE3: 8D 04 C9    >1005          STA   ASAVESEG   
00CEE6: 68          >1006          PLA              ;GET STATUS
00CEE7: 8D 06 C9    >1007          STA   PSAVESEG   ;SAVE
00CEEA: 60          >1008          RTS              
                    >1009 
                    >1010 ****** RESTORE THE ACC, X AND P REGISTERS *****
                    >1011 
                    >1012 RESTAXP2                  
00CEEB: AE 05 C9    >1013          LDX   XSAVESEG   
00CEEE: AD 06 C9    >1014          LDA   PSAVESEG   
00CEF1: 48          >1015          PHA              
00CEF2: AD 04 C9    >1016          LDA   ASAVESEG   
00CEF5: 28          >1017          PLP              
00CEF6: 60          >1018          RTS              
                    >1019 
                    >1020 ***** THIS SEGMENTS GLOBAL SUBROUTINES *****
                    >1021 
                    >1022 SUBTABL2                  
                    >1023 
            =0102   >1024 PUTBREAKC EQU  *-SUBTABL2*4+2+$100 
00CEF7: FF C9       >1025          DA    PUTBREAK-1 
                    >1026 
            =010A   >1027 UPDATEC  EQU   *-SUBTABL2*4+2+$100 
00CEF9: 37 CA       >1028          DA    UPDATE-1   
                    >1029 
            =0112   >1030 INITDISRC EQU  *-SUBTABL2*4+2+$100 
00CEFB: 80 CA       >1031          DA    INITDISR-1 
                    >1032 
            =011A   >1033 DISBREAKC EQU  *-SUBTABL2*4+2+$100 
00CEFD: 45 CB       >1034          DA    DISBREAK-1 
                    >1035 
            =0122   >1036 ROMTORAMC EQU  *-SUBTABL2*4+2+$100 
00CEFF: 10 CD       >1037          DA    ROMTORAM-1 
                    >1038 
            =012A   >1039 DISPONC  EQU   *-SUBTABL2*4+2+$100 
00CF01: 65 CB       >1040          DA    DISPON-1   
                    >1041 
            =0132   >1042 WINDDRC  EQU   *-SUBTABL2*4+2+$100 
00CF03: F1 CC       >1043          DA    WINDDR-1   
                    >1044 
            =013A   >1045 DECTGPCC EQU   *-SUBTABL2*4+2+$100 
00CF05: 21 CE       >1046          DA    DECTGPC-1  
                    >1047 
            =0142   >1048 DECTOGOC EQU   *-SUBTABL2*4+2+$100 
00CF07: 24 CE       >1049          DA    DECTOGO-1  
                    >1050 
            =014A   >1051 VALIDPCC EQU   *-SUBTABL2*4+2+$100 
00CF09: 28 CE       >1052          DA    VALIDPC-1  
                    >1053 
            =0152   >1054 VALIDADC EQU   *-SUBTABL2*4+2+$100 
00CF0B: 2B CE       >1055          DA    VALIDAD-1  
                    >1056 
            =015A   >1057 REPLACEC EQU   *-SUBTABL2*4+2+$100 
00CF0D: 3A CD       >1058          DA    REPLACE-1  
                    >1059 
            =0162   >1060 STAPCIYC EQU   *-SUBTABL2*4+2+$100 
00CF0F: 69 CC       >1061          DA    STAPCIY-1  
                    >1062 
                    >1063 **********************************
                    >1064 * SEGMENT CROSSOVER AREA
                    >1065 **********************************
                    >1066 
            =008C   >1068 S2END    =     $CF9D-*    
                    >1069          do    nolist     
                    >1070          LST   OFF        
                    >1071          fin              
                    >1072          ERR   *-1/$CF9D  
00CF11: FF FF FF FF >1073          DS    $CF9D-*,$FF 
                    >1074 
00CF9D: 20 DF CE    >1075 MAIN102  JSR   SAVEAXP2   ;COME HERE TO TRANSFER TO SEGMENT0 DIRECTLY
00CFA0: AE 23 C8    >1076          LDX   SLOTN0     
00CFA3: A9 05       >1077          LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >1078          STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 EB CE    >1079          JSR   RESTAXP2   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >1080          RTS              ;GOTO COMMANDS IN THIS SEGMENT
00CFAC: EA          >1081          NOP              
00CFAD: EA          >1082          NOP              ;MATCH LENGTH WITH SEG 5
                    >1083 
                    >1084 * TRANSFER TO OTHER SEGMENTS
                    >1085 
                    >1086 TRANSFR2                  
                    >1087 
00CFAE: 20 DF CE    >1088          JSR   SAVEAXP2   
00CFB1: 68          >1089          PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >1090          CLC              
00CFB3: 69 01       >1091          ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >1092          STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >1093          PLA              
00CFB9: 69 00       >1094          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1095          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1096          PHA              
00CFBF: AD DE C9    >1097          LDA   TEMPSEG    
00CFC2: 48          >1098          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 02       >1099          LDA   #2          ;CURRENT SEG #
00CFC5: 48          >1100          PHA              
00CFC6: 20 DD C9    >1101          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1102          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1103          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1104          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1105          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1106 * NEW SEGMENT
00CFD4: A9 CF       >1107          LDA   #>RETURN2  ;WHERE TO RETURN TO
00CFD6: 48          >1108          PHA              
00CFD7: A9 ED       >1109          LDA   #RETURN2   
00CFD9: 48          >1110          PHA              
00CFDA: AD 44 C8    >1111          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1112          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1113          LSR              
00CFE0: 4A          >1114          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1115 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1116          TAX              
00CFE2: BD F8 CE    >1117          LDA   SUBTABL2+1,X 
00CFE5: 48          >1118          PHA              
00CFE6: BD F7 CE    >1119          LDA   SUBTABL2,X 
00CFE9: 48          >1120          PHA              
                    >1121 
00CFEA: 20 EB CE    >1122          JSR   RESTAXP2   ;RESTORE REGISTERS
00CFED: 60          >1123          RTS              ;USE RTS TO GOTO SUB
                    >1124 
                    >1125 * RETURN HERE FROM SUBROUTINE
                    >1126 
            =CFED   >1127 RETURN2  EQU   *-1        
00CFEE: 20 DF CE    >1128          JSR   SAVEAXP2   
00CFF1: 68          >1129          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1130          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1131          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 EB CE    >1132          JSR   RESTAXP2   
00CFFB: 60          >1133          RTS              ;RETURN TO PROGRAM
                    >1134 
00CFFC: FF FF FF FF >1135          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     24            PUT   SEG3       
                    >2    *********************************
                    >3    *  SEGTHREEFONE
                    >4    *********************************
                    >5    
                    >6             ORG   $C800       ;CODE RUNS HERE
                    >7    
                    >8    * THIS SPACE IS SHARED WITH THE VIA AND THE RAM.
                    >9    
00C800: 00          >10            HEX   00          ;NEED THIS BYTE SO $C7FF IS NOT REFERENCED,
                    >11                             ; TO MAKE WORK IN SLOT #7
                    >12   
                    >13   ********************************
                    >14   *  TABLE2
                    >15   * NUMBER CONTAINS PROCESSOR AND
                    >16   * ADDRESS MODE INFO. LOCATION
                    >17   * IN MATRIX IS OPCODE.
                    >18   ********************************
                    >19   
                    >20   * BITS  7  6 5  4 3 2 1 0
                    >21   *       R  T T  ADDRESS MODE
                    >22   *       E  Y Y  0 TO $16
                    >23   *       S  P P
                    >24   *       E  E E
                    >25   *       R  0 0= 6502
                    >26   *       V  0 1= 65C02
                    >27   *       E  1 0= 65802 & 65816
                    >28   *       D  1 1= RESERVED
                    >29   *       0 = ALWAYS
                    >30   
                    >31   * ADDRESS MODES
                    >32   
                    >33   * $MODE BYTES SYMBOL ADDRESS
                    >34   *   0    2-3    #      IMED
                    >35   *   1     3     a      ABS
                    >36   *   2     4     al     ABS.L
                    >37   *   3     2     d      DIR
                    >38   *   4     1   i or S   ACC;IMP;STK
                    >39   *   5     2   (d),y    DIR.IND.INX
                    >40   *   6     2   [d],y    DIR.IND.L.INX
                    >41   *   7     2   (d,x)    DIR.INX.IND
                    >42   *   8     2    d,x     DIR.INX.W/X
                    >43   *   9     2    d,y     DIR.INX.W/Y
                    >44   *   A     3    a,x     ABS.INX.W/X
                    >45   *   B     4    al,x    ABS.L.INX.W/X
                    >46   *   C     3    a,y     ABS.INX.W/Y
                    >47   *   D     2     r      P.C.REL
                    >48   *   E     3     rl     P.C.REL.L
                    >49   *   F     3    (a)     ABS.IND.
                    >50   *  10     2    (d)     DIR.IND.
                    >51   *  11     2    [d]     DIR.IND.L
                    >52   *  12     3   (a,x)    ABS.INX.IND
                    >53   *  13     2    d,s     STK.REL
                    >54   *  14     2   (d,s),y  STK.REL.IND.INX
                    >55   *  15     2     s      STK
                    >56   *  16     3    b,b     XYZ
                    >57   
                    >58   * SPECIAL NOTES
                    >59   
                    >60   * PER - rl ; PEI - (d) ; PEA - a
                    >61   * REP & SEP - 2 BYTES ALWAYS
                    >62   * BRK - 1 BYTES IN 6502 & C02 AND 2 BYTES IN 65816 & 802.
                    >63   
            =C801   >64   TABLE2   EQU   *          
                    >65   
                    >66   *       LSD -->  0 1 2 3 4 5 6 7 8 9 A B C D E F
                    >67   
00C801: 04 07 55 53 >68            HEX   04075553230303510400044421010142 
00C811: 0D 05 30 54 >69            HEX   0D05305423080846040C2444210A0A4B 
00C821: 01 07 42 53 >70            HEX   01074253030303510400044401010142 
00C831: 0D 05 30 54 >71            HEX   0D05305428080846040C24442A0A0A4B 
00C841: 04 07 44 53 >72            HEX   04074453560303510400044401010142 
00C851: 0D 05 30 54 >73            HEX   0D05305456080846040C2444420A0A4B 
00C861: 04 07 4E 53 >74            HEX   04074E5323030351040004440F010142 
00C871: 0D 05 30 54 >75            HEX   0D05305428080846040C2444320A0A4B 
00C881: 2D 07 4E 53 >76            HEX   2D074E53030303510420044401010142 
00C891: 0D 05 30 54 >77            HEX   0D05305408080946040C0444210A2A4B 
00C8A1: 00 07 00 53 >78            HEX   00070053030303510400044401010142 
00C8B1: 0D 05 30 54 >79            HEX   0D05305408080946040C04440A0A0C4B 
00C8C1: 00 07 40 53 >80            HEX   00074053030303510400042401010142 
00C8D1: 0D 05 30 54 >81            HEX   0D05305450080846040C24244F0A0A4B 
00C8E1: 00 07 40 53 >82            HEX   00074053030303510400044401010142 
00C8F1: 0D 05 30 54 >83            HEX   0D05305441080846040C2444520A0A4B 
                    >84   
                    >85   ********************************
                    >86   *  TABLE3
                    >87   * EACH 2 BYTE NUMBER REPRESENTS
                    >88   * THE SYMBOLS DISPLAYED AND THE
                    >89   * NUMBER OF BYTES FOR THAT MODE
                    >90   ********************************
                    >91   
                    >92   * BIT # --> 7 6 5 4 3 2 1 0 7  6  5 4 3  2 1 0 
                    >93   *SYMBOL --> 0 0 # ( [ a x x 0 ,S ,X ] ) ,Y { e
                    >94   
                    >95   * a = 1 DISPLAY BYTES AS IS
                    >96   * a = 0 DISPLAY RELATIVE ADDRESS
                    >97   
                    >98   * xx = NUMBER OF BYTES IN INSTRUCTION - 1 
                    >99   * 00 = 1, 01 = 2, 10 = 3, 11 = 4
                    >100  
                    >101  * { = 0 NO ADDRESS DISPLAYED
                    >102  * { = 1 DISPLAY ADDRESS
                    >103  
                    >104  * e = 0 RELATIVE OFFSET OR NO ADDRESS
                    >105  * e = 1 EFFECTIVE ADDRESS
                    >106  
            =C901   >107  TABLE3   EQU   *          
                    >108  
                    >109  * START WITH MODE 0
                    >110  
00C901: 25 00       >111           DDB   %0010010100000000 
00C903: 06 03       >112           DDB   %0000011000000011 
00C905: 07 00       >113           DDB   %0000011100000000 
00C907: 05 03       >114           DDB   %0000010100000011 
00C909: 04 00       >115           DDB   %0000010000000000 
00C90B: 15 0F       >116           DDB   %0001010100001111 
00C90D: 0D 17       >117           DDB   %0000110100010111 
00C90F: 15 2B       >118           DDB   %0001010100101011 
00C911: 05 23       >119           DDB   %0000010100100011 
00C913: 05 07       >120           DDB   %0000010100000111 
00C915: 06 23       >121           DDB   %0000011000100011 
00C917: 07 23       >122           DDB   %0000011100100011 
00C919: 06 07       >123           DDB   %0000011000000111 
00C91B: 01 02       >124           DDB   %0000000100000010 
00C91D: 02 02       >125           DDB   %0000001000000010 
00C91F: 16 0B       >126           DDB   %0001011000001011 
00C921: 15 0B       >127           DDB   %0001010100001011 
00C923: 0D 13       >128           DDB   %0000110100010011 
00C925: 16 2B       >129           DDB   %0001011000101011 
00C927: 05 43       >130           DDB   %0000010101000011 
00C929: 15 4F       >131           DDB   %0001010101001111 
00C92B: 05 00       >132           DDB   %0000010100000000 
00C92D: 06 00       >133           DDB   %0000011000000000 
                    >134  TBL3END                   
                    >135  
                    >136  ********************************
                    >137  * MNEMONIC TABLE
                    >138  * CONTAINS MNEMONICS COMPRESSED
                    >139  * INTO 2 BYTES.
                    >140  ********************************
                    >141  
                    >142  MNEMTABL                  
                    >143  
                    >144  *ADC
00C92F: 04 83       >145           HEX   0483       
                    >146  *AND 
00C931: 05 C4       >147           HEX   05C4       
                    >148  *ASL
00C933: 06 6C       >149           HEX   066C       
                    >150  *BCC
00C935: 08 63       >151           HEX   0863       
                    >152  *BCS
00C937: 08 73       >153           HEX   0873       
                    >154  *BEQ
00C939: 08 B1       >155           HEX   08B1       
                    >156  *BIT
00C93B: 09 34       >157           HEX   0934       
                    >158  *BMI
00C93D: 09 A9       >159           HEX   09A9       
                    >160  *BNE
00C93F: 09 C5       >161           HEX   09C5       
                    >162  *BPL
00C941: 0A 0C       >163           HEX   0A0C       
                    >164  *BRA
00C943: 0A 41       >165           HEX   0A41       
                    >166  *BRK
00C945: 0A 4B       >167           HEX   0A4B       
                    >168  *BRL
00C947: 0A 4C       >169           HEX   0A4C       
                    >170  *BVC
00C949: 0A C3       >171           HEX   0AC3       
                    >172  *BVS
00C94B: 0A D3       >173           HEX   0AD3       
                    >174  *CLC
00C94D: 0D 83       >175           HEX   0D83       
                    >176  *CLD
00C94F: 0D 84       >177           HEX   0D84       
                    >178  *CLI
00C951: 0D 89       >179           HEX   0D89       
                    >180  *CLV
00C953: 0D 96       >181           HEX   0D96       
                    >182  *CMP
00C955: 0D B0       >183           HEX   0DB0       
                    >184  *COP
00C957: 0D F0       >185           HEX   0DF0       
                    >186  *CPX
00C959: 0E 18       >187           HEX   0E18       
                    >188  *CPY
00C95B: 0E 19       >189           HEX   0E19       
                    >190  *DEC
00C95D: 10 A3       >191           HEX   10A3       
                    >192  *DEX
00C95F: 10 B8       >193           HEX   10B8       
                    >194  *DEY
00C961: 10 B9       >195           HEX   10B9       
                    >196  *EOR
00C963: 15 F2       >197           HEX   15F2       
                    >198  *INC
00C965: 25 C3       >199           HEX   25C3       
                    >200  *INX
00C967: 25 D8       >201           HEX   25D8       
                    >202  *INY
00C969: 25 D9       >203           HEX   25D9       
                    >204  *JML
00C96B: 29 AC       >205           HEX   29AC       
                    >206  *JMP
00C96D: 29 B0       >207           HEX   29B0       
                    >208  *JSL
00C96F: 2A 6C       >209           HEX   2A6C       
                    >210  *JSR
00C971: 2A 72       >211           HEX   2A72       
                    >212  *LDA
00C973: 30 81       >213           HEX   3081       
                    >214  *LDX
00C975: 30 98       >215           HEX   3098       
                    >216  *LDY
00C977: 30 99       >217           HEX   3099       
                    >218  *LSR
00C979: 32 72       >219           HEX   3272       
                    >220  *MVN
00C97B: 36 CE       >221           HEX   36CE       
                    >222  *MVP
00C97D: 36 D0       >223           HEX   36D0       
                    >224  *NOP
00C97F: 39 F0       >225           HEX   39F0       
                    >226  *ORA
00C981: 3E 41       >227           HEX   3E41       
                    >228  *PEA
00C983: 40 A1       >229           HEX   40A1       
                    >230  *PEI
00C985: 40 A9       >231           HEX   40A9       
                    >232  *PER
00C987: 40 B2       >233           HEX   40B2       
                    >234  *PHA
00C989: 41 01       >235           HEX   4101       
                    >236  *PHB
00C98B: 41 02       >237           HEX   4102       
                    >238  *PHD
00C98D: 41 04       >239           HEX   4104       
                    >240  *PHK
00C98F: 41 0B       >241           HEX   410B       
                    >242  *PHP
00C991: 41 10       >243           HEX   4110       
                    >244  *PHX
00C993: 41 18       >245           HEX   4118       
                    >246  *PHY
00C995: 41 19       >247           HEX   4119       
                    >248  *PLA
00C997: 41 81       >249           HEX   4181       
                    >250  *PLB
00C999: 41 82       >251           HEX   4182       
                    >252  *PLD
00C99B: 41 84       >253           HEX   4184       
                    >254  *PLP
00C99D: 41 90       >255           HEX   4190       
                    >256  *PLX
00C99F: 41 98       >257           HEX   4198       
                    >258  *PLY
00C9A1: 41 99       >259           HEX   4199       
                    >260  *REP
00C9A3: 48 B0       >261           HEX   48B0       
                    >262  *ROL
00C9A5: 49 EC       >263           HEX   49EC       
                    >264  *ROR
00C9A7: 49 F2       >265           HEX   49F2       
                    >266  *RTI
00C9A9: 4A 89       >267           HEX   4A89       
                    >268  *RTL
00C9AB: 4A 8C       >269           HEX   4A8C       
                    >270  *RTS
00C9AD: 4A 93       >271           HEX   4A93       
                    >272  *SBC
00C9AF: 4C 43       >273           HEX   4C43       
                    >274  *SEC
00C9B1: 4C A3       >275           HEX   4CA3       
                    >276  *SED
00C9B3: 4C A4       >277           HEX   4CA4       
                    >278  *SEI
00C9B5: 4C A9       >279           HEX   4CA9       
                    >280  *SEP
00C9B7: 4C B0       >281           HEX   4CB0       
                    >282  *STA
00C9B9: 4E 81       >283           HEX   4E81       
                    >284  *STP
00C9BB: 4E 90       >285           HEX   4E90       
                    >286  *STX
00C9BD: 4E 98       >287           HEX   4E98       
                    >288  *STY
00C9BF: 4E 99       >289           HEX   4E99       
                    >290  *STZ
00C9C1: 4E 9A       >291           HEX   4E9A       
                    >292  *TAX
00C9C3: 50 38       >293           HEX   5038       
                    >294  *TAY
00C9C5: 50 39       >295           HEX   5039       
                    >296  *TCD
00C9C7: 50 64       >297           HEX   5064       
                    >298  *TCS
00C9C9: 50 73       >299           HEX   5073       
                    >300  *TDC
00C9CB: 50 83       >301           HEX   5083       
                    >302  *TRB
00C9CD: 52 42       >303           HEX   5242       
                    >304  *TSB
00C9CF: 52 62       >305           HEX   5262       
                    >306  *TSC
00C9D1: 52 63       >307           HEX   5263       
                    >308  *TSX
00C9D3: 52 78       >309           HEX   5278       
                    >310  *TXA
00C9D5: 53 01       >311           HEX   5301       
                    >312  *TXS
00C9D7: 53 13       >313           HEX   5313       
                    >314  *TXY
00C9D9: 53 19       >315           HEX   5319       
                    >316  *TYA
00C9DB: 53 21       >317           HEX   5321       
                    >318  *TYX
00C9DD: 53 38       >319           HEX   5338       
                    >320  *WAI
00C9DF: 5C 29       >321           HEX   5C29       
                    >322  *WDM
00C9E1: 5C 8D       >323           HEX   5C8D       
                    >324  *XBA
00C9E3: 60 41       >325           HEX   6041       
                    >326  *XCE
00C9E5: 60 65       >327           HEX   6065       
                    >328  
                    >329  * ASSEMBLER DIRECTIVES
                    >330  
                    >331  *HEX
00C9E7: 20 B8       >332           HEX   20B8       
                    >333  
                    >334  *ADR
00C9E9: 04 92       >335           HEX   0492       
                    >336  
                    >337  ****************************************
                    >338  * THIS POINT MUST BE $CA00 OR ABOVE.
                    >339  ****************************************
                    >340  
00C9EB: FF FF FF FF >341           DS    $CA00-*,$FF 
                    >342  
                    >343  ***** TABLE4 *****
                    >344  * POSSIBLE SYMBOLS USED IN OPERAND
                    >345  
00CA00: 00          >346           HEX   00          ;SO DOESN'T LOOK LIKE 2 BYTE SYMBOL
                    >347  TABLE4                    
00CA01: A3 00       >348           ASC   "#",00     
00CA03: A8 00       >349           ASC   "(",00     
00CA05: DB 00       >350           ASC   "[",00     
00CA07: AC D3 00    >351           ASC   ",S",00    
00CA0A: AC D8 00    >352           ASC   ",X",00    
00CA0D: DD 00       >353           ASC   "]",00     
00CA0F: A9 00       >354           ASC   ")",00     
00CA11: AC D9 00    >355           ASC   ",Y",00    
                    >356  
                    >357  ********************************
                    >358  *  MINI ASSEMBLER
                    >359  ********************************
                    >360  
            =CA14   >361  COMDMA   EQU   *          
                    >362  
00CA14: F0 0E =CA24 >363           BEQ   MANOADDR   ;IF NO ADDRESS FOLLOWS
00CA16: 20 3D CF    >364           JSR   LOADMEM     ;GET ADDRESS
00CA19: 90 09 =CA24 >365           BCC   MANOADDR   ;ADDRESS OK
00CA1B: A9 04       >366           LDA   #BADPAR     ;BAD PARAMETER ERROR NUMBER
                    >367  ERREXIT3                  
00CA1D: 20 AE CF    >368           JSR   TRANSFR3   ;INVALID ADDRESS
00CA20: 35          >369           DFB   ERRBEEPC   ;CODE
00CA21: 4C 9D CF    >370           JMP   MAIN103    
                    >371  
                    >372  MANOADDR                  
00CA24: 20 1F CC    >373           JSR   DISASM      ; DISPLAY INSTRUCTION
00CA27: A2 13       >374           LDX   #19         ;SPACES
00CA29: 20 AE CF    >375           JSR   TRANSFR3   
00CA2C: 27          >376           DFB   PRBL2C      ;CODE
00CA2D: A9 A1       >377           LDA   #"!"       
00CA2F: 8D 32 C9    >378           STA   PROMPT      ;NEW PROMPT
00CA32: 20 AE CF    >379           JSR   TRANSFR3   ;GET INPUT LINE
00CA35: 57          >380           DFB   GETLNC      ;CODE
00CA36: 90 03 =CA3B >381           BCC   :NOESC     
00CA38: 4C 9D CF    >382           JMP   MAIN103    ;if "esc" key
00CA3B: E8          >383  :NOESC   INX              ;X=0 IF ONLY <CR> ENTERED
00CA3C: A0 00       >384           LDY   #00        
00CA3E: 20 AE CF    >385           JSR   TRANSFR3   ;GET FIRST CHARACTER
00CA41: 01          >386           DFB   GETCHRC     ;CODE
00CA42: D0 0B =CA4F >387           BNE   MACHKCOM   ;CHECK INPUT
                    >388  
                    >389  * ONLY CR ENTERED SO GO TO NEXT INSTRUCTION
                    >390  * NUMDISP = # OF BYTES IN INSTRUCTION-1
                    >391  
00CA44: AC 5F C9    >392           LDY   NUMDISP    
                    >393  MAINCMEM                  
00CA47: 20 2B CF    >394           JSR   INCMEMLH   ;INC MEM POINTER
00CA4A: 88          >395           DEY              
00CA4B: 10 FA =CA47 >396           BPL   MAINCMEM   
00CA4D: 30 D5 =CA24 >397           BMI   MANOADDR   ;GO TO NEXT INSTRUCTION
                    >398  
                    >399  MACHKCOM                  
00CA4F: C9 BA       >400           CMP   #":"        ;RETURN TO COMMAND LEVEL?
00CA51: D0 03 =CA56 >401           BNE   MASTLET1   ;IF NO
00CA53: 4C 9D CF    >402           JMP   MAIN103     ;IF YES
                    >403  MASTLET1                  
00CA56: 8D 60 C9    >404           STA   MNEMCOMP   ;TEMP SAVE
                    >405  
                    >406  * CAUSE ERROR IF A SOFT BREAK IS AT THIS LOCATION
                    >407  
00CA59: 8C E2 C9    >408           STY   TEMP+1      ;SAVE Y
                    >409  * LETTER 1,2,3 USED BY VALIDAD
00CA5C: AD 36 C8    >410           LDA   MEMHI      
00CA5F: 8D 2B C8    >411           STA   LETTER2     ;USED BY VALIDAD
00CA62: AD 35 C8    >412           LDA   MEMLOW     
00CA65: 8D 2A C8    >413           STA   LETTER1    
00CA68: 20 AE CF    >414           JSR   TRANSFR3   ;IS THIS LOCATION A REAL BREAK?
00CA6B: 52          >415           DFB   VALIDADC   ;CODE
00CA6C: D0 03 =CA71 >416           BNE   :OK         ;IF NO
00CA6E: 4C 00 CC    >417           JMP   MANOTRAM   ;IF REAL BRK, DISPLAY **ACCESS ERROR**
00CA71: AC E2 C9    >418  :OK      LDY   TEMP+1      ;RESTORE Y
                    >419  
00CA74: AD 60 C9    >420           LDA   MNEMCOMP   ;RESTORE
00CA77: 0E 61 C9    >421           ASL   MNEMCOMP+1 ;MAKE BIT 0 = 0
00CA7A: 20 4D CF    >422           JSR   PACKMNEM   ;PACK 1ST LETTER OF MNEMONIC
00CA7D: 20 AE CF    >423           JSR   TRANSFR3   ;
00CA80: 01          >424           DFB   GETCHRC     ;CODE
00CA81: F0 35 =CAB8 >425           BEQ   MAERR      
00CA83: 20 4D CF    >426           JSR   PACKMNEM   ;PACK 2ND LETTER
00CA86: 20 AE CF    >427           JSR   TRANSFR3   ;
00CA89: 01          >428           DFB   GETCHRC     ;CODE
00CA8A: F0 2C =CAB8 >429           BEQ   MAERR      
00CA8C: 20 4D CF    >430           JSR   PACKMNEM   ;PACK 3RD LETTER
00CA8F: 8E 41 C8    >431           STX   XBUFF      
                    >432  
                    >433  *MNEMCOMP & MNEMCOMP+1 CONTAIN 2 BYTE MNEMONIC IN COMPRESSED
                    >434  *FORM.
                    >435  *COMPARE WITH COMPRESSED MMEMONICS IN MNEMTABL
                    >436  
00CA92: A2 00       >437           LDX   #0         
                    >438  FINDMNEM                  
00CA94: AD 60 C9    >439           LDA   MNEMCOMP   
00CA97: CD 00 C8    >440           CMP   $C800       ;SELECT EXT ROM
00CA9A: DD 2F C9    >441           CMP   MNEMTABL,X ;DO THEY MATCH?
00CA9D: 8D 00 CF    >442           STA   $CF00       ;ENABLE EXT RAM
00CAA0: D0 0E =CAB0 >443           BNE   NEXTMNEM   ;IF NO, TRY NEXT MNEM
00CAA2: AD 61 C9    >444           LDA   MNEMCOMP+1 
00CAA5: CD 00 C8    >445           CMP   $C800      
00CAA8: DD 30 C9    >446           CMP   MNEMTABL+1,X ;DO BOTH BYTES MATCH?
00CAAB: 8D 00 CF    >447           STA   $CF00      
00CAAE: F0 21 =CAD1 >448           BEQ   FOUNDMNE   ;IF YES
                    >449  
                    >450  NEXTMNEM                  
00CAB0: E8          >451           INX              
00CAB1: E8          >452           INX              
00CAB2: E0 BC       >453           CPX   #$BC        ;OUT OF MNEMONICS?
00CAB4: 90 DE =CA94 >454           BLT   FINDMNEM   ;IF NO
                    >455  
                    >456  * IF OUT OF MNEMONICS OR OTHER ERROR, COME HERE.
                    >457  
00CAB6: A0 0A       >458  MAERROP  LDY   #10         ;OPCODE ERROR
00CAB8: 98          >459  MAERR    TYA              
00CAB9: 18          >460           CLC              
00CABA: 69 0B       >461           ADC   #11         ;POSITION UNDER ERROR
00CABC: AA          >462           TAX              
00CABD: 20 AE CF    >463           JSR   TRANSFR3   ;PRINT SPACES (X REG)
00CAC0: 27          >464           DFB   PRBL2C      ;CODE
00CAC1: A9 DE       >465           LDA   #"^"       
00CAC3: 20 85 CE    >466           JSR   COUT3       ;INDICATE WHERE ERROR WAS
00CAC6: 20 AE CF    >467           JSR   TRANSFR3   ;PRINT "ERR" RING BELL
00CAC9: 1F          >468           DFB   PRERRC      ;code
00CACA: 20 AE CF    >469           JSR   TRANSFR3   ;<RETURN>
00CACD: 0F          >470           DFB   CROUTC      ;code
00CACE: 4C 24 CA    >471           JMP   MANOADDR   ;TRY AGAIN
                    >472  
                    >473  * FOUND THE MNEMONIC IN MNEMTABL
                    >474  
                    >475  FOUNDMNE                  
00CAD1: 8E 37 C8    >476           STX   OPCODE      ;USE OPCODE AS TEMP STORAGE FOR # OF MNEMONIC
                    >477  
                    >478  *BUILD A 2 BYTE NUMBER OF DISPLAY INFO, AS IN TABLE 3
                    >479  
00CAD4: A9 00       >480           LDA   #0         
00CAD6: 8D 45 C8    >481           STA   MODE        ;TEMP BUFFER
00CAD9: 8D 13 C9    >482           STA   OPERAND    
00CADC: A9 02       >483           LDA   #02         ;SET BIT USED AS FINISHED FLAG
00CADE: 8D 14 C9    >484           STA   OPERAND+1  ;FORM 2 BYTES HERE
                    >485  CHEKSYMB                  
00CAE1: AE 41 C8    >486           LDX   XBUFF       ;GET STRING POINTER
                    >487  FROMADRS                  
00CAE4: 20 AE CF    >488           JSR   TRANSFR3   ;GET CHAR
00CAE7: 01          >489           DFB   GETCHRC     ;CODE
00CAE8: 8E 41 C8    >490           STX   XBUFF      
00CAEB: AE 45 C8    >491           LDX   MODE        ;TABLE4 POINTER
00CAEE: DD 01 CA    >492           CMP   TABLE4,X   
00CAF1: F0 10 =CB03 >493           BEQ   ISSYMB     
                    >494  
                    >495  *SYMBOLS DON'T MATCH
                    >496  
00CAF3: 88          >497           DEY              
00CAF4: EE 41 C8    >498           INC   XBUFF       ;TRY SAME CHAR AGAIN
00CAF7: BD 00 CA    >499           LDA   TABLE4-1,X ;WAS IT A 2 BYTE SYMBOL
00CAFA: F0 04 =CB00 >500           BEQ   CLRSHFT     ;IF NO
00CAFC: 88          >501           DEY              ;IF YES, BACKUP TO 1ST CHARACTER
00CAFD: EE 41 C8    >502           INC   XBUFF      
00CB00: 18          >503  CLRSHFT  CLC              
00CB01: 90 06 =CB09 >504           BCC   SHFTSYMB   ;<ALWAYS>
                    >505  
                    >506  *SYMBOLS DO MATCH
                    >507  
                    >508  ISSYMB                    
00CB03: BD 02 CA    >509           LDA   TABLE4+1,X ;IS IT TWO BYTE SYMBOL?
00CB06: D0 14 =CB1C >510           BNE   INCSYMB     ;IF YES, BOTH BYTES MUST MATCH
00CB08: 38          >511           SEC              
                    >512  SHFTSYMB                  
00CB09: 2E 14 C9    >513           ROL   OPERAND+1  
00CB0C: 2E 13 C9    >514           ROL   OPERAND    
00CB0F: 30 39 =CB4A >515           BMI   SYMBDONE   ;FLAG BIT IS IN BIT7
                    >516  
00CB11: E0 13       >517           CPX   #19         ;OUT OF SYMBOLS TO CHECK?
00CB13: B0 EB =CB00 >518           BGE   CLRSHFT     ;IF YES, KEEP SHIFTING TILL DONE
                    >519  
                    >520  *INC TABLE4 POINTER TO NEXT SYMBOL
                    >521  
00CB15: E8          >522           INX              
00CB16: E8          >523           INX              
00CB17: BD 01 CA    >524           LDA   TABLE4,X   
00CB1A: D0 01 =CB1D >525           BNE   NEXTSYM    
00CB1C: E8          >526  INCSYMB  INX              
                    >527  NEXTSYM                   
00CB1D: 8E 45 C8    >528           STX   MODE       
                    >529  
                    >530  *IS ADDRESS NEXT
                    >531  
00CB20: E0 06       >532           CPX   #$6         ;CHECK FOR ADDRESS?
00CB22: D0 BD =CAE1 >533           BNE   CHEKSYMB   
                    >534  
                    >535  *IS ADDRESS
                    >536  *CHECK FOR HEX DATA & READ 
                    >537  
00CB24: AE 41 C8    >538           LDX   XBUFF       ;GET STRING POINTER
00CB27: 20 AE CF    >539           JSR   TRANSFR3   ;READ NUMBER, START AT CURRENT CHAR
00CB2A: 11          >540           DFB   CHKREADAC  ;code
00CB2B: EE 5D C9    >541           INC   INLENGTH   
00CB2E: 4E 5D C9    >542           LSR   INLENGTH   ;CONVERT TO # OF BYTES IN ADDRESS
00CB31: AD 14 C9    >543           LDA   OPERAND+1  
00CB34: 38          >544           SEC              
00CB35: 2A          >545           ROL              ;ALWAYS SET BIT2 OF 1ST BYTE
00CB36: 0A          >546           ASL              
00CB37: 0A          >547           ASL              
00CB38: 0D 5D C9    >548           ORA   INLENGTH   ;BIT 7 OF BYTE 2 IS ALWAYS 0
00CB3B: 0A          >549           ASL              
00CB3C: 8D 14 C9    >550           STA   OPERAND+1  ;INCLUDE # OF BYTES INFO
00CB3F: 2E 13 C9    >551           ROL   OPERAND    
00CB42: 88          >552           DEY              
00CB43: E8          >553           INX              
00CB44: 4C E4 CA    >554           JMP   FROMADRS   
                    >555  
                    >556  *ASSEMBLER INPUT ERROR
                    >557  
00CB47: 4C B8 CA    >558  TOMAERR  JMP   MAERR      
                    >559  
                    >560  *THE TWO BYTES REPRESENTING THE MODE OF THE INSTRUCTION
                    >561  *ARE FINISHED. FIND THE POSSIBLE MODES OF THE INSTRUCTION.
                    >562  *THE RELATIVE INSTRUCTIONS; BEQ $34, MAY LOOK LIKE MODE #3
                    >563  *BEQ $0034 WILL LOOK LIKE MODE #1. MODE #E WILL LOOK LIKE
                    >564  *MODE #2 SOME MODES LOOK THE SAME TRY FOR EXACT MATCH,
                    >565  *IF MODE OF MNEM. & THIS MODE DON'T MATCH TRY TO MATCH IN
                    >566  *TABLE3 WITH DIFFERENT MODE(SOME LOOK THE SAME)
                    >567  *IF STILL NO MATCH WITH MNEM. OR IN TABLE3, THEN MAYBEE IS
                    >568  *RELATIVE INSTRUCTION. SET BIT 2 OF 1ST BYTE TO 0 AND TRY
                    >569  *FOR MATCH, IF NO MATCH, DECREASE # OF BYTES (BITS 0 & 1)
                    >570  *BY 1 AND TRY AGAIN.
                    >571  
                    >572  *FIND THE OPCODE OF THE INSTRUCTION BY MATCHING THE
                    >573  *MODE OF THE INPUT OPERAND WITH THE MODE OF THE INPUT MNEM.
                    >574  
                    >575  SYMBDONE                  
00CB4A: A2 08       >576           LDX   #8          ;SET UP FOR DISPLAYING GENERATED CODE
00CB4C: 20 7A CE    >577           JSR   SPACES      ;ALIGN WITH PREVIOUS CODE
                    >578  
00CB4F: 20 9C CE    >579           JSR   FINDOPCD   ;LOOK FOR OPCODE
00CB52: 90 68 =CBBC >580           BCC   FOUNDOP     ;OPCODE IN OPCODE BUFFER, MODE IN MODE
                    >581  
                    >582  * NO MATCH FOUND BETWEEN MNEM MODES & OPERAND MODE
                    >583  * TRY LOOKING AT RELATIVE MODES WITH Z PAGE DESTINATIONS
                    >584  * OR RELATIVE LONG.
                    >585  
00CB54: AD 13 C9    >586           LDA   OPERAND    
00CB57: 29 3B       >587           AND   #%00111011 ;SET BITS 7, 6, & 2 TO 0
00CB59: 8D 13 C9    >588           STA   OPERAND    
00CB5C: 20 9C CE    >589           JSR   FINDOPCD   ;LOOK FOR OPCODE
00CB5F: 90 22 =CB83 >590           BCC   RELATIVE   ;FOUND IT. RELATIVE INST.
                    >591  
                    >592  *NO MATCH TRY LOOKING AT ALL OTHER RELATIVE MODES
                    >593  
00CB61: A9 3C       >594           LDA   #%00111100 
00CB63: 2C 13 C9    >595           BIT   OPERAND    
00CB66: D0 08 =CB70 >596           BNE   LOOKDIR     ;NOT RELATIVE MODE SO LOOK FOR DIRECTIVE
00CB68: CE 13 C9    >597           DEC   OPERAND     ;REDUCE # OF BYTES BY 1 TO MATCH RELATIVE
00CB6B: 20 9C CE    >598           JSR   FINDOPCD   
00CB6E: 90 13 =CB83 >599           BCC   RELATIVE   ;FOUND IT RELATIVE INST.
                    >600  
                    >601  *-----------------------------------------------
                    >602  * NOT ABLE TO MATCH MNEM MODES WITH OPERAND MODE
                    >603  * SO LOOK FOR ASSEMBLER DIRECTIVE
                    >604  
00CB70: AE 37 C8    >605  LOOKDIR  LDX   OPCODE      ;GET MNEMONIC NUMBER
00CB73: E0 B8       >606           CPX   #$B8        ;IS IT HEX?
00CB75: D0 04 =CB7B >607           BNE   :CKADR      ;IF NO
00CB77: A9 01       >608           LDA   #1          ;1 BYTE OF HEX DATA
00CB79: D0 5D =CBD8 >609           BNE   ADRHEX     
00CB7B: E0 BA       >610  :CKADR   CPX   #$BA        ;IS IT ADR?
00CB7D: D0 C8 =CB47 >611           BNE   TOMAERR     ;IF NOT MUST BE MA ERROR
00CB7F: A9 02       >612           LDA   #2          ;2 BYTES OF ADR DATA
00CB81: D0 55 =CBD8 >613           BNE   ADRHEX      ;<ALWAYS>
                    >614  
                    >615  *----------------------------------
                    >616  ***** RELATIVE MODE ***** 
                    >617  
                    >618  RELATIVE                  
00CB83: 20 2B CF    >619           JSR   INCMEMLH   ;CONVERT ADDRESS TO RELATIVE OFFSET
00CB86: 20 2B CF    >620           JSR   INCMEMLH   
                    >621  
                    >622  * OFFSET IS CALCULATED FROM ADDRESS OF INSTRUCTION
                    >623  * FOLLOWING THE BRANCH OPERAND
                    >624  * SUBTRACT MEMLOW & MEMHI FROM TEMP+1 & TEMP+2, WHICH SHOULD 
                    >625  * GIVE ME THE BRANCH OFFSET
                    >626  
00CB89: AD 45 C8    >627           LDA   MODE        ;IS IT REL. LONG
00CB8C: C9 1C       >628           CMP   #$E*2       ;MODE IS TIMES 2
00CB8E: 18          >629           CLC              
00CB8F: F0 01 =CB92 >630           BEQ   RELLONG     ;IF YES, SUBTRACT AN EXTRA 1
00CB91: 38          >631           SEC              
00CB92: AD 2A C8    >632  RELLONG  LDA   LETTER1     ;LOW BYTE OF OPERAND ADDRESS
00CB95: ED 35 C8    >633           SBC   MEMLOW     
00CB98: 8D 2A C8    >634           STA   LETTER1    
00CB9B: AD 2B C8    >635           LDA   LETTER2     ;HI BYTE OF OPERAND
00CB9E: ED 36 C8    >636           SBC   MEMHI      
00CBA1: 8D 2B C8    >637           STA   LETTER2    
00CBA4: D0 07 =CBAD >638           BNE   BNCHBACK   ;IF NOT 0 MUST BE BRANCHING BACKWARD
00CBA6: 2C 2A C8    >639           BIT   LETTER1     ;IF FORWARD BRANCH LOW BYTE CAN'T BE NEGATIVE
00CBA9: 30 5C =CC07 >640           BMI   BRNCHOUT   ;IF IT IS THEN BRANCH IS OUT OF RANGE
00CBAB: 10 09 =CBB6 >641           BPL   OFFSETOK   ;IF OK
                    >642  BNCHBACK                  
00CBAD: C9 FF       >643           CMP   #$FF       
00CBAF: D0 56 =CC07 >644           BNE   BRNCHOUT   ;THE MSBYTE MUST BE $00 OR $FF
00CBB1: 2C 2A C8    >645           BIT   LETTER1     ;IF BRANCHING BACKWARD BYTE CAN'T BE POSITIVE
00CBB4: 10 51 =CC07 >646           BPL   BRNCHOUT   
                    >647  OFFSETOK                  
00CBB6: 20 8A CE    >648           JSR   DECMEMLH   ;DEC MEMLOW & MEMHI
00CBB9: 20 8A CE    >649           JSR   DECMEMLH   
                    >650  
                    >651  * PUT THE INSTRUCTION INTO RAM
                    >652  * FOUND THE PROPER OP CODE
                    >653  
00CBBC: AD 37 C8    >654  FOUNDOP  LDA   OPCODE     
00CBBF: 20 06 CF    >655           JSR   INITMMV     ;INIT LOWADD W/MEMLOW, STA, LDA, VERIFY
00CBC2: D0 3C =CC00 >656           BNE   MANOTRAM   ;STORE, Z BIT SET IF VERIFY OK
00CBC4: 20 7F CE    >657           JSR   BYTESP3     ;DISPLAY CODE BYTE & SPACE
00CBC7: 20 2B CF    >658           JSR   INCMEMLH   ;INC MEMLOW & MEMHI POINTERS
                    >659  
00CBCA: AE 45 C8    >660           LDX   MODE        ;MODE IS TIMES 2
00CBCD: CD 00 C8    >661           CMP   $C800       ;DISABLE EXT RAM
00CBD0: BD 01 C9    >662           LDA   TABLE3,X   
00CBD3: CD 00 CF    >663           CMP   $CF00       ;ENABLE EXT RAM
00CBD6: 29 03       >664           AND   #$03        ;# OF BYTES IN OPERAND
                    >665  
                    >666  * ENTER HERE IF ASSEMBLER DIRECTIVE
00CBD8: 8D 5D C9    >667  ADRHEX   STA   INLENGTH   ;USED BY STOROPER
00CBDB: F0 16 =CBF3 >668           BEQ   MANEXT      ;MUST BE IMPLIED
00CBDD: A2 00       >669           LDX   #0         
                    >670  
                    >671  * STORE INLENGTH NUMBER OF BYTES
                    >672  STOROPER                  
00CBDF: BD 2A C8    >673           LDA   LETTER1,X  
00CBE2: 20 06 CF    >674           JSR   INITMMV    
00CBE5: D0 16 =CBFD >675           BNE   MAERRBY2   ;LOCATION NOT RAM
00CBE7: 20 7F CE    >676           JSR   BYTESP3     ;DISPLAY ACC & SPACE
00CBEA: 20 2B CF    >677           JSR   INCMEMLH   
00CBED: E8          >678           INX              
00CBEE: EC 5D C9    >679           CPX   INLENGTH   
00CBF1: 90 EC =CBDF >680           BLT   STOROPER   
                    >681  
                    >682  
                    >683  * DISASSEMBLE THE NEXT INSTRUCTION
                    >684  
00CBF3: 20 AE CF    >685  MANEXT   JSR   TRANSFR3   ;CARRIAGE RETURN
00CBF6: 0F          >686           DFB   CROUTC      ;code
00CBF7: 4C 24 CA    >687           JMP   MANOADDR   
                    >688  
                    >689  MAERRBY3                  
00CBFA: 20 8A CE    >690           JSR   DECMEMLH   ;DEC MEMLOW & MEMHI
                    >691  MAERRBY2                  
00CBFD: 20 8A CE    >692           JSR   DECMEMLH   
                    >693  MANOTRAM                  
00CC00: 20 AE CF    >694           JSR   TRANSFR3   ;DISPLAY "**ACCESS ERROR**"
00CC03: 0C          >695           DFB   DISNOTRMC  ;CODE
00CC04: 4C F3 CB    >696           JMP   MANEXT     
                    >697  
                    >698  BRNCHOUT                  
00CC07: AD 45 C8    >699           LDA   MODE        ;IF REL LONG
00CC0A: C9 1C       >700           CMP   #$E*2       ;MODE IS TIMES 2
00CC0C: F0 A8 =CBB6 >701           BEQ   OFFSETOK   
00CC0E: 20 AE CF    >702           JSR   TRANSFR3   ;
00CC11: 1F          >703           DFB   PRERRC      ;CODE
00CC12: 20 AE CF    >704           JSR   TRANSFR3   ;DISPLAY "BRANCH OUT OF RANGE"
00CC15: 04          >705           DFB   DISBROUTC  ;CODE
00CC16: 20 8A CE    >706           JSR   DECMEMLH   
00CC19: 20 8A CE    >707           JSR   DECMEMLH   
00CC1C: 4C F3 CB    >708           JMP   MANEXT     
                    >709  
                    >710  *****************************************
                    >711  *   DISASM   
                    >712  * DISASSEMBLE THE CURRENT INSTRUCTION 
                    >713  * MEMLOW & MEMHI CONTAIN THE PROGRAM COUNTER LO & HI BYTES
                    >714  * MEMPBR CONTAINS THE PROGRAM BANK REGISTER.
                    >715  ***************************************** 
                    >716  
                    >717  * USE CURRENT MEMPBR
                    >718  
00CC1F: 20 AE CF    >719  DISASM   JSR   TRANSFR3   ;MEM DISPLAY
00CC22: 19          >720           DFB   DSMEMCOLC  ;code
00CC23: A2 00       >721           LDX   #0         
00CC25: A0 00       >722           LDY   #0         
00CC27: 20 6B CF    >723           JSR   GETBYTE     ;GET OPCODE
00CC2A: 8D 37 C8    >724           STA   OPCODE      
00CC2D: A8          >725           TAY              ;USED AS POINTER FOR TABLE3
00CC2E: CD 00 C8    >726           CMP   $C800       ;DISABLE EXT RAM
00CC31: B9 01 C8    >727           LDA   TABLE2,Y   ;INSTRUCTIONS ADDRESS MODE & PC TYPE
00CC34: CD 00 CF    >728           CMP   $CF00       ;ENABLE EXT RAM
00CC37: 29 60       >729           AND   #$60        ;ISOLATE PC TYPE
00CC39: F0 14 =CC4F >730           BEQ   TYPEOK      ;IF 6502 MUST BE OK
00CC3B: C9 20       >731           CMP   #$20        ;IS IT 65C02 INSTRUCTION?
00CC3D: D0 08 =CC47 >732           BNE   CHK816      ;IF NO, MUST BE 816
00CC3F: AD 1F C8    >733           LDA   CMOSFLAG   ;IS THE 65C02 ALLOWED?
00CC42: D0 0B =CC4F >734           BNE   TYPEOK      ;IF NOT RESTRICTED TO 65C02, IT IS OK
00CC44: 4C 39 CE    >735           JMP   MAKENOP     ;INVALID INSTRUCTION ???
00CC47: 2C 1F C8    >736  CHK816   BIT   CMOSFLAG   ;IS 65816 ALLOWED?
00CC4A: 70 03 =CC4F >737           BVS   TYPEOK      ;IF YES
00CC4C: 4C 39 CE    >738           JMP   MAKENOP     ;INVALID INSTRUCTION ???
                    >739  
00CC4F: CD 00 C8    >740  TYPEOK   CMP   $C800       ;DISABLE EXT RAM
00CC52: B9 01 C8    >741           LDA   TABLE2,Y   ;GET ADD. MODE & VALID PC INFO
00CC55: CD 00 CF    >742           CMP   $CF00       ;ENABLE EXT RAM
00CC58: 29 1F       >743           AND   #$1F        ;LEAVE ONLY ADD. MODE INFO
00CC5A: 0A          >744           ASL              ; TIME 2
00CC5B: A8          >745           TAY              ;ADDRESS MODE TIMES 2 (OFFSET TO TABLE3)
00CC5C: 8D 45 C8    >746           STA   MODE       
00CC5F: CD 00 C8    >747           CMP   $C800       ;DISABLE EXT RAM
00CC62: B9 01 C9    >748           LDA   TABLE3,Y   ;GET # OF BYTES & DISPLAY INFO
00CC65: CD 00 CF    >749           CMP   $CF00       ;ENABLE EXT RAM
00CC68: 29 03       >750           AND   #$03        ;GET # OF BYTES IN INSTRUCTION
00CC6A: AA          >751           TAX              
00CC6B: 98          >752           TYA              ;TEST FOR # MODE Y=0?
00CC6C: D0 1B =CC89 >753           BNE   SVNUMBYT   ;IF NOT
                    >754  *8 OR 16 BIT
00CC6E: 2C 1F C8    >755           BIT   CMOSFLAG   ;IS 65802 OR 816 MODE ON
00CC71: 50 16 =CC89 >756           BVC   SVNUMBYT   ;IF NO THEN 8 BIT
00CC73: AD 37 C8    >757           LDA   OPCODE     
00CC76: 29 0F       >758           AND   #$0F       
00CC78: C9 09       >759           CMP   #$09        ;IS OPCODE ACCUMULATOR INSTRUCTION
00CC7A: D0 07 =CC83 >760           BNE   CHK16X      ;IF NO, CHECK FOR 16 BIT INDEX
                    >761  * CHECK FOR 16 BIT DATA
00CC7C: 2C 62 C9    >762           BIT   MFLAG       ;BIT 7 = 1 IF 16 BIT DATA
00CC7F: 10 08 =CC89 >763           BPL   SVNUMBYT   ;IF 8 BIT
00CC81: 30 05 =CC88 >764           BMI   SIXTEEN     ;IF 16 BIT
00CC83: 2C 62 C9    >765  CHK16X   BIT   MFLAG       ;BIT 6 = 1 IF 16 BIT INDEX
00CC86: 50 01 =CC89 >766           BVC   SVNUMBYT   ;IF 8 BIT 
00CC88: E8          >767  SIXTEEN  INX              ;16 BIT DATA SO DISPLAY 3 BYTES
                    >768  
                    >769  SVNUMBYT                  
00CC89: 8E 5F C9    >770           STX   NUMDISP     ;# OF BYTES TO DISPLAY-1
00CC8C: A0 00       >771           LDY   #0          ;SET FOR GETBYTE
00CC8E: 8C 38 C8    >772           STY   MLIFLAG     ;0=MLI CALL, MAKE <> 0 IF NOT MLI
00CC91: 20 59 CE    >773           JSR   DISPBYTS   ;DISPLAY THE HEX FORM OF INSTRUCTION
                    >774  
                    >775  *PRINT MNEMONIC
                    >776  
00CC94: AE 37 C8    >777           LDX   OPCODE     
                    >778  
                    >779  *GET OFFSET THAT POINTS TO COMPRESSED MNEMONIC
00CC97: 20 AE CF    >780           JSR   TRANSFR3   ;LDA TABLE1,X
00CC9A: 06          >781           DFB   LTABLE1C   ;CODE
00CC9B: AA          >782           TAX              
00CC9C: CD 00 C8    >783           CMP   $C800      
00CC9F: BD 2F C9    >784           LDA   MNEMTABL,X ;GET UPPER HALF OF COMP' MNEM
00CCA2: CD 00 CF    >785           CMP   $CF00      
00CCA5: 8D 60 C9    >786           STA   MNEMCOMP   
00CCA8: CD 00 C8    >787           CMP   $C800      
00CCAB: BD 30 C9    >788           LDA   MNEMTABL+1,X ;GET LOWER HALF OF COMP' MNEM
00CCAE: CD 00 CF    >789           CMP   $CF00      
00CCB1: 8D 61 C9    >790           STA   MNEMCOMP+1 
                    >791  
                    >792  * UNPACK THE 2 BYTE MNEMONIC & DISPLAY
                    >793  
00CCB4: A2 03       >794           LDX   #3         
00CCB6: AD 60 C9    >795  UNPACK   LDA   MNEMCOMP   
00CCB9: 4A          >796           LSR              
00CCBA: 4A          >797           LSR              
00CCBB: 29 1F       >798           AND   #%00011111 ;LETTER
00CCBD: 18          >799           CLC              
00CCBE: 69 C0       >800           ADC   #$C0       
00CCC0: 20 85 CE    >801           JSR   COUT3       ;
00CCC3: 20 59 CF    >802           JSR   LEFT5      ;SHIFT MNEMCOMP LEFT 5 TIMES
00CCC6: CA          >803           DEX              
00CCC7: D0 ED =CCB6 >804           BNE   UNPACK     
                    >805  
00CCC9: A9 A0       >806           LDA   #$A0       
00CCCB: 20 85 CE    >807           JSR   COUT3       ;SPACE
                    >808  
                    >809  *DISPLAY THE REST OF THE INSTRUCTION
00CCCE: AC 45 C8    >810           LDY   MODE        ;GET OFFSET TO TABLE3
00CCD1: CD 00 C8    >811           CMP   $C800       ;DISABLE EXT RAM
00CCD4: B9 01 C9    >812           LDA   TABLE3,Y   ;GET THE 1ST BYTE OF DISPLAY INFO
00CCD7: CD 00 CF    >813           CMP   $CF00       ;ENABLE EXT RAM
00CCDA: 0A          >814           ASL              
00CCDB: 0A          >815           ASL              
00CCDC: A2 00       >816           LDX   #0         
                    >817  NEXTSYMB                  
00CCDE: 0A          >818           ASL              
00CCDF: 48          >819           PHA              ;SAVE
00CCE0: 90 0B =CCED >820           BCC   NOSYMBOL   
                    >821  GETSYMB                   
00CCE2: BD 01 CA    >822           LDA   TABLE4,X   ;GET THE SYMBOL
00CCE5: F0 0C =CCF3 >823           BEQ   SYMBEND     ;0=STOP
00CCE7: 20 85 CE    >824           JSR   COUT3       ;DISPLAY SYMBOL
00CCEA: E8          >825           INX              
00CCEB: D0 F5 =CCE2 >826           BNE   GETSYMB    
                    >827  NOSYMBOL                  
00CCED: E8          >828           INX              
00CCEE: BD 01 CA    >829           LDA   TABLE4,X   
00CCF1: D0 FA =CCED >830           BNE   NOSYMBOL   
00CCF3: E8          >831  SYMBEND  INX              
00CCF4: 68          >832           PLA              
00CCF5: E0 06       >833           CPX   #6          ;DISPLAY ADDRESS?
00CCF7: D0 03 =CCFC >834           BNE   :NO        ;IF NO
00CCF9: 4C BA CD    >835           JMP   DISPADDR   ;YES
00CCFC: E0 13       >836  :NO      CPX   #19         ;DISPLAY EFFECTIVE ADD.?
00CCFE: 90 DE =CCDE >837           BLT   NEXTSYMB   ;IF NO
00CD00: 0A          >838           ASL              ;DISPLAY EFFECTIVE ADD?
00CD01: 90 65 =CD68 >839           BCC   :LEAVE      ;IF NO
00CD03: 48          >840           PHA              
00CD04: A9 A0       >841           LDA   #$A0       
00CD06: 20 85 CE    >842           JSR   COUT3       ;
00CD09: A9 FB       >843           LDA   #"{"       
00CD0B: 20 85 CE    >844           JSR   COUT3       ;
00CD0E: 68          >845           PLA              
00CD0F: 0A          >846           ASL              ;EFFECTIVE ADDRESS?
00CD10: 90 59 =CD6B >847           BCC   RELADDRS   ;IF NO
00CD12: 20 AE CF    >848           JSR   TRANSFR3   ;CALC EFFECTIVE ADDRESS
00CD15: 3C          >849           DFB   CALCEFFC   ;code
                    >850  * DISPLAY EFFECTIVE ADDRESS
00CD16: AD D6 C8    >851           LDA   EFFADRS+2  
00CD19: 20 AE CF    >852           JSR   TRANSFR3   
00CD1C: 37          >853           DFB   PRBYTEC     ;code
00CD1D: AD D5 C8    >854           LDA   EFFADRS+1  
00CD20: AE D4 C8    >855           LDX   EFFADRS    
00CD23: 20 AE CF    >856           JSR   TRANSFR3   
00CD26: 3F          >857           DFB   PRNTAXC     ;code
                    >858  
                    >859  *------------------
                    >860  * CHECK FOR MLI CALL
                    >861  
00CD27: AD 38 C8    >862           LDA   MLIFLAG     ;WAS THIS AN MLI CALL ?
00CD2A: D0 3C =CD68 >863           BNE   :LEAVE      ;IF NO
00CD2C: 20 AE CF    >864           JSR   TRANSFR3   ;DO <CR>
00CD2F: 0F          >865           DFB   CROUTC      ;code
00CD30: A2 08       >866           LDX   #8         
00CD32: 20 7A CE    >867           JSR   SPACES      ;6 SPACES
00CD35: A2 02       >868           LDX   #2          ;# OF BYTES-1
00CD37: A0 03       >869           LDY   #3         
00CD39: 20 59 CE    >870           JSR   DISPBYTS   ;DISPLAY THE 3 BYTES OF MLI STUFF
00CD3C: A2 04       >871           LDX   #4         
00CD3E: 20 7A CE    >872           JSR   SPACES      ;4 SPACES, RETURNS WITH X=0
00CD41: 8E 38 C8    >873           STX   MLIFLAG     ;CLEAR AGAIN AFTER DISPBYTS
00CD44: A0 03       >874           LDY   #3         
00CD46: 20 6B CF    >875           JSR   GETBYTE    
00CD49: 20 AE CF    >876           JSR   TRANSFR3   ;PRINT MLI CODE BYTE
00CD4C: 37          >877           DFB   PRBYTEC    
00CD4D: A9 A0       >878           LDA   #$A0       
00CD4F: 20 85 CE    >879           JSR   COUT3       ;SPACE
00CD52: C8          >880           INY              
00CD53: 20 6B CF    >881           JSR   GETBYTE    
00CD56: AA          >882           TAX              
00CD57: C8          >883           INY              
00CD58: 20 6B CF    >884           JSR   GETBYTE    
00CD5B: 20 AE CF    >885           JSR   TRANSFR3   ;PRINT MLI ADDRESS
00CD5E: 3F          >886           DFB   PRNTAXC    
00CD5F: AE 5F C9    >887           LDX   NUMDISP    
00CD62: E8          >888           INX              
00CD63: E8          >889           INX              ;INC NUMDISP TO REFLECT
00CD64: E8          >890           INX              ;3 XTRA BYTES OF MLI
00CD65: 8E 5F C9    >891           STX   NUMDISP    
00CD68: 4C 51 CE    >892  :LEAVE   JMP   ENDDISAS   
                    >893  
                    >894  *NOT EFFECTIVE ADDRESS SO INDICATE RELATIVE OFFSET
                    >895  
                    >896  RELADDRS                  
00CD6B: A9 00       >897           LDA   #0         
00CD6D: 8D E2 C9    >898           STA   TEMP+1     
00CD70: AC 5F C9    >899           LDY   NUMDISP     ;# BYTES IN INSTRUCTION-1
00CD73: 20 6B CF    >900           JSR   GETBYTE     ;LOAD HI ORDER BYTE OF OFFSET. OP LO HI
00CD76: 8D E1 C9    >901           STA   TEMP       
00CD79: 88          >902           DEY              
00CD7A: F0 06 =CD82 >903           BEQ   ONEBYTE    
00CD7C: 20 6B CF    >904           JSR   GETBYTE     ;GET LO BYTE OF OFFSET
00CD7F: 8D E2 C9    >905           STA   TEMP+1     
00CD82: AD E1 C9    >906  ONEBYTE  LDA   TEMP        ;GET HI BYTE OR ONLY BYTE
00CD85: 10 15 =CD9C >907           BPL   POSOFSET   ;POSITIVE OFFSET
                    >908  
                    >909  *TAKE 2'S COMPLIMENT OF NEG OFFSET
00CD87: A9 00       >910           LDA   #0         
00CD89: 38          >911           SEC              
00CD8A: ED E2 C9    >912           SBC   TEMP+1      ;TEMP+1 IS 0 FOR 1 BYTE OFFSET
00CD8D: 8D E2 C9    >913           STA   TEMP+1      ;AND WILL NOT AFFECT THE CARRY FLAG
00CD90: A9 00       >914           LDA   #0         
00CD92: ED E1 C9    >915           SBC   TEMP       
00CD95: 8D E1 C9    >916           STA   TEMP        ;2'S COMP. FINISHED
00CD98: A9 AD       >917           LDA   #"-"       
00CD9A: D0 02 =CD9E >918           BNE   DISPSIGN   
                    >919  POSOFSET                  
00CD9C: A9 AB       >920           LDA   #"+"       
                    >921  DISPSIGN                  
00CD9E: 20 85 CE    >922           JSR   COUT3       ;DISPLAY SIGN OF OFFSET
00CDA1: AD E1 C9    >923           LDA   TEMP       
00CDA4: 20 AE CF    >924           JSR   TRANSFR3   ;PRINT ACC AS 2 HEX DIGITS
00CDA7: 37          >925           DFB   PRBYTEC     ;CODE
00CDA8: 98          >926           TYA              ;TEST Y
00CDA9: F0 07 =CDB2 >927           BEQ   OFFSTEND   ;ONE BYTE OFFSET
00CDAB: AD E2 C9    >928           LDA   TEMP+1      ;LOW BYTE OF OFFSET
00CDAE: 20 AE CF    >929           JSR   TRANSFR3   ;DISPLAY AS 2 HEX DIGITS
00CDB1: 37          >930           DFB   PRBYTEC     ;CODE
                    >931  OFFSTEND                  
00CDB2: A9 FD       >932           LDA   #"}"       
00CDB4: 20 85 CE    >933           JSR   COUT3       ;
00CDB7: 4C 51 CE    >934           JMP   ENDDISAS   ;END OF DISASSEMBLY
                    >935  
                    >936  
                    >937  *DISPLAY THE ADDRESS BYTES OF THE INSTRUCTION (E.G. LDA #$XX)
                    >938  
                    >939  DISPADDR                  
00CDBA: 0A          >940           ASL              ;TEST BIT 2 FROM TABLE 3 (RELATIVE ADDR.?)
00CDBB: B0 41 =CDFE >941           BCS   DISPASIS   ;DISPLAY ADDRESS AS IS
                    >942  
                    >943  *CALCULATE RELATIVE ADDRESS
                    >944  *OUR PCHI & PCLO IS POINTING AT THE CURRENT INSTRUCITON.
                    >945  * BUT A BRANCH OFFSET WORKS OFF THE FOLLOWING INSTRUCTIONS PC.
                    >946  * SO ADD THE NUMBER OF BYTES IN THE BRANCH INSTRUCTION
                    >947  * (2 OR 3) TO THE OFFSET
                    >948  
00CDBD: A9 00       >949           LDA   #0         
00CDBF: 8D E2 C9    >950           STA   TEMP+1      ;HI BYTE
00CDC2: AC 5F C9    >951           LDY   NUMDISP     ;# BYTES IN INSTRUCTION-1
                    >952  
                    >953  *GET 1 BYTE OFFSET OR HI BYTE OF 2 BYTE OFFSET 
00CDC5: 20 6B CF    >954           JSR   GETBYTE    
00CDC8: C0 02       >955           CPY   #2         
00CDCA: F0 09 =CDD5 >956           BEQ   TWOBYTE    
00CDCC: 8D E1 C9    >957           STA   TEMP        ;ONLY USED FOR 8 BIT OFFSET
00CDCF: 09 00       >958           ORA   #00         ;SET FLAGS
00CDD1: 10 05 =CDD8 >959           BPL   NOEXTEND   ;IF POS # DO NOT SIGN EXTEND
00CDD3: A9 FF       >960           LDA   #$FF       
00CDD5: 8D E2 C9    >961  TWOBYTE  STA   TEMP+1      ;SIGN EXTEND 8 BIT NEG OFFSET, OR HI BYTE
00CDD8: 88          >962  NOEXTEND DEY              ;DEC. INSTRUCTION POINTER
00CDD9: F0 06 =CDE1 >963           BEQ   ONEOFFST   ;IF NOT BYTE OFFSET
00CDDB: 20 6B CF    >964           JSR   GETBYTE    
00CDDE: 8D E1 C9    >965           STA   TEMP       
                    >966  
                    >967  *ADD THE NUMBER OF BYTES IN THE BRANCH INSTRUCTION
                    >968  * TO THE OFFSET. ADD OFFSET TO PC & DISPLAY ADDRESS
                    >969  
                    >970  ONEOFFST                  
00CDE1: 38          >971           SEC              ;ADD IN CARRY BECAUSE NUMDISP IS 1 LESS
00CDE2: AD E1 C9    >972           LDA   TEMP        ;THAN # OF BYTES
00CDE5: 6D 5F C9    >973           ADC   NUMDISP    
00CDE8: 08          >974           PHP              ;SAVE CARRY
00CDE9: 18          >975           CLC              
00CDEA: 6D 35 C8    >976           ADC   MEMLOW      ;ADD TO PC
00CDED: AA          >977           TAX              
00CDEE: AD 36 C8    >978           LDA   MEMHI      
00CDF1: 69 00       >979           ADC   #0          ;ADD IN CARRY FROM MEMLOW IF ANY
00CDF3: 28          >980           PLP              ;GET CARRY FROM NUMDISP IF ANY
00CDF4: 6D E2 C9    >981           ADC   TEMP+1      ;ADD IN HI BYTE OFFSET
00CDF7: 20 AE CF    >982           JSR   TRANSFR3   ;DISPLAY ADDRESS
00CDFA: 3F          >983           DFB   PRNTAXC     ;CODE
00CDFB: 4C 27 CE    >984           JMP   T3BYTE2     ;GET BYTE2 FROM TABLE3
                    >985  
                    >986  *DISPLAY THE ADDRESS BYTES AS IS
                    >987  
                    >988  DISPASIS                  
                    >989  
00CDFE: AC 5F C9    >990           LDY   NUMDISP     ;# BYTES IN INSTRUCTION-1
00CE01: F0 24 =CE27 >991           BEQ   T3BYTE2     ;ONLY 1 BYTE INSTRUCTION
                    >992  
00CE03: AD 45 C8    >993           LDA   MODE        ;SKIP IF # MODE
00CE06: F0 0D =CE15 >994           BEQ   DISPAS2    
                    >995  
                    >996  * CLEAR EFFADRS
00CE08: A9 00       >997           LDA   #0         
00CE0A: A0 02       >998           LDY   #2         
00CE0C: 99 D4 C8    >999  :NEXT    STA   EFFADRS,Y  
00CE0F: 88          >1000          DEY              
00CE10: D0 FA =CE0C >1001          BNE   :NEXT      
00CE12: AC 5F C9    >1002          LDY   NUMDISP    
                    >1003 
00CE15: 20 6B CF    >1004 DISPAS2  JSR   GETBYTE     ;GET THE HIGHEST ORDER ADDRESS BYTE
00CE18: AE 45 C8    >1005          LDX   MODE        ;DON'T CHANGE EFF IF # MODE
00CE1B: F0 03 =CE20 >1006          BEQ   :NOEFF      ;IF #
00CE1D: 99 D3 C8    >1007          STA   EFFADRS-1,Y ;SAVE FOR EFFECTIVE ADDRS.
00CE20: 20 AE CF    >1008 :NOEFF   JSR   TRANSFR3   ;PRINT THE BYTE
00CE23: 37          >1009          DFB   PRBYTEC     ;CODE
00CE24: 88          >1010          DEY              
00CE25: D0 EE =CE15 >1011          BNE   DISPAS2     ;NEXT BYTE
                    >1012 
                    >1013 *LOAD 2ND BYTE FROM TABLE3 DISPLAY INFO
                    >1014 
00CE27: AC 45 C8    >1015 T3BYTE2  LDY   MODE        ;OFFSET TO TABLE3
00CE2A: CD 00 C8    >1016          CMP   $C800       ;DISABLE EXT RAM
00CE2D: B9 02 C9    >1017          LDA   TABLE3+1,Y ;GET 2ND BYTE OF DISPLAY INFO
00CE30: CD 00 CF    >1018          CMP   $CF00       ;ENABLE EXT RAM
00CE33: 0A          >1019          ASL              ;BIT 7 EMPTY
00CE34: A2 06       >1020          LDX   #6          ;RESET X
00CE36: 4C DE CC    >1021          JMP   NEXTSYMB   ;CONTINUE DISPLAYING INSTRUCTION
                    >1022 
                    >1023 *DISPLAY "???"
                    >1024 
00CE39: 98          >1025 MAKENOP  TYA              ;OPCODE
00CE3A: 20 AE CF    >1026          JSR   TRANSFR3   ;DISPLAY OPCODE
00CE3D: 37          >1027          DFB   PRBYTEC     ;code
00CE3E: A2 0A       >1028          LDX   #10        
00CE40: 20 AE CF    >1029          JSR   TRANSFR3   ;LINE UP
00CE43: 27          >1030          DFB   PRBL2C      ;code
00CE44: A2 03       >1031          LDX   #3         
00CE46: A9 BF       >1032 PRINT?   LDA   #"?"       
00CE48: 20 85 CE    >1033          JSR   COUT3       ;
00CE4B: CA          >1034          DEX              
00CE4C: D0 F8 =CE46 >1035          BNE   PRINT?     
00CE4E: 8E 5F C9    >1036          STX   NUMDISP     ;# OF BYTES - 1
                    >1037 
                    >1038 EFFADDRS                  ;<<<TEMPORARY>>>
                    >1039 
                    >1040 *---------------------------------
                    >1041 *  END DISASSEMBLE ROUTINE
                    >1042 *---------------------------------
                    >1043 
                    >1044 ENDDISAS                  
00CE51: 20 AE CF    >1045          JSR   TRANSFR3   ;RETURN
00CE54: 0F          >1046          DFB   CROUTC      ;code
00CE55: 60          >1047          RTS              ;END OF DISASSEMBLY
                    >1048 
                    >1049 
                    >1050 
                    >1051 ********* SUBROUTINES **********
                    >1052 
                    >1053 
                    >1054 *-----------------------------------
                    >1055 * DISPLAY THE HEX FORM OF THE INSTRUCTION
                    >1056 * SET MLIFLAG TO NON 0 IF NOT JSR $BF00
                    >1057 * ENTER WITH X=NUMBER OF BYTES-1
                    >1058 *
                    >1059 * SPACES ENTRY POINT DISPLAYS X NUMBER OF SPACES
                    >1060 *-----------------------------------
                    >1061 
                    >1062 * MLI CODE FOR COMPARISON
00CE56: 20 00 BF    >1063 MLICODE  JSR   $BF00      
                    >1064 
                    >1065 DISPBYTS                  
00CE59: 20 6B CF    >1066          JSR   GETBYTE    
00CE5C: D9 56 CE    >1067          CMP   MLICODE,Y  ;DOES IT MATCH MLI CALL?
00CE5F: F0 03 =CE64 >1068          BEQ   :MAYBE      ;THIS PART MATCHES
00CE61: EE 38 C8    >1069          INC   MLIFLAG     ;NOT AN MLI CALL
00CE64: 20 7F CE    >1070 :MAYBE   JSR   BYTESP3     ;PRINT ACC AS HEX BYTE & SPACE
00CE67: C8          >1071          INY              
00CE68: CA          >1072          DEX              
00CE69: 10 EE =CE59 >1073          BPL   DISPBYTS   
00CE6B: AE 5F C9    >1074          LDX   NUMDISP     ;# OF BYTES DISPLAYED-1
00CE6E: E8          >1075          INX              
                    >1076 
                    >1077 *PRINT PROPER NUMBER OF SPACES SO ALL MNEMONICS LINE UP
00CE6F: A9 0C       >1078          LDA   #12        
00CE71: 38          >1079 :LOOP    SEC              
00CE72: E9 03       >1080          SBC   #3         
00CE74: F0 08 =CE7E >1081          BEQ   DBYTEEND   ;NO SPACES
00CE76: CA          >1082          DEX              
00CE77: D0 F8 =CE71 >1083          BNE   :LOOP      
00CE79: AA          >1084          TAX              ;# OF SPACES TO PRINT
                    >1085 
                    >1086 *-------------------------------
                    >1087 * ALTERNATE ENTRY POINT
                    >1088 
00CE7A: 20 AE CF    >1089 SPACES   JSR   TRANSFR3   ;PRINT X NUMBER OF SPACES
00CE7D: 27          >1090          DFB   PRBL2C      ;CODE
                    >1091 DBYTEEND                  
00CE7E: 60          >1092          RTS              
                    >1093 
                    >1094 *--------------------------------
                    >1095 * PRINT THE ACC AS 1 HEX BYTE FOLLOWED BY 1 SPACE
                    >1096 
00CE7F: 20 AE CF    >1097 BYTESP3  JSR   TRANSFR3   ;
00CE82: 37          >1098          DFB   PRBYTEC     ;CODE
00CE83: A9 A0       >1099          LDA   #$A0        ;SPACE
                    >1100 
                    >1101 *-----------------------------
                    >1102 
00CE85: 20 AE CF    >1103 COUT3    JSR   TRANSFR3   
00CE88: 07          >1104          DFB   COUTC      
00CE89: 60          >1105          RTS              
                    >1106 
                    >1107 *------------------------------
                    >1108 
                    >1109 * DECREMENT MEMLOW BY 1
                    >1110 DECMEMLH                  
00CE8A: 38          >1111          SEC              
00CE8B: AD 35 C8    >1112          LDA   MEMLOW     
00CE8E: E9 01       >1113          SBC   #1         
00CE90: 8D 35 C8    >1114          STA   MEMLOW     
00CE93: AD 36 C8    >1115          LDA   MEMHI      
00CE96: E9 00       >1116          SBC   #0         
00CE98: 8D 36 C8    >1117          STA   MEMHI      
00CE9B: 60          >1118          RTS              
                    >1119 
                    >1120 *FINDOPCD SUBROUTINE
                    >1121 *COMPARE THE OPERAND OF THE INPUT INSTRUCTION WITH
                    >1122 * THE OPERAND OF EACH MODE IN TABLE 3
                    >1123 *IF A MATCH IS FOUND THEN CHECK TABLE 2 TO SEE IF
                    >1124 * THE MNEMONIC IS AVAILABLE IN THAT MODE.
                    >1125 *IF IT IS THEN SAVE MODE IN MODE & OPCODE IN OPCODE
                    >1126 
                    >1127 FINDOPCD                  
00CE9C: A2 2C       >1128          LDX   #TBL3END-TABLE3-2 ;1ST BYTE OF LAST MODE
00CE9E: CD 00 C8    >1129 NEWOPER  CMP   $C800      
00CEA1: BD 02 C9    >1130          LDA   TABLE3+1,X ;GET BYTE2 OF OPCODE FLAGS
00CEA4: CD 00 CF    >1131          CMP   $CF00      
00CEA7: 29 FC       >1132          AND   #$FC        ;IGNORE BITS 0 & 1
00CEA9: CD 14 C9    >1133          CMP   OPERAND+1  ;DOES INPUT OPERAND MATCH?
00CEAC: D0 24 =CED2 >1134          BNE   NEXTOPER   ;IF NO
00CEAE: AD 13 C9    >1135          LDA   OPERAND    
00CEB1: 29 3F       >1136          AND   #$3F        ;IGNORE BITS 6 & 7
00CEB3: CD 00 C8    >1137          CMP   $C800      
00CEB6: DD 01 C9    >1138          CMP   TABLE3,X   ;DO MODES MATCH?
00CEB9: 8D 00 CF    >1139          STA   $CF00      
00CEBC: D0 14 =CED2 >1140          BNE   NEXTOPER   ;IF NO
                    >1141 
                    >1142 *OPERAND MODES MATCH. NOW SEE IF MNEM IS AVAILABLE IN THIS MODE
                    >1143 
00CEBE: 8E 45 C8    >1144          STX   MODE        ;SAVE POSSIBLE (MODE x 2)
00CEC1: A2 00       >1145          LDX   #$0        
                    >1146 POSIBLOP                  
00CEC3: 20 AE CF    >1147          JSR   TRANSFR3   ;LDA TABLE1,X
00CEC6: 06          >1148          DFB   LTABLE1C   ;CODE
00CEC7: CD 37 C8    >1149          CMP   OPCODE      ;COMPARE WITH MNEMONIC THAT WAS SAVED HERE
00CECA: F0 0C =CED8 >1150          BEQ   CHKMODE    
                    >1151 NEXTOPCD                  
00CECC: E8          >1152          INX              
00CECD: D0 F4 =CEC3 >1153          BNE   POSIBLOP   
                    >1154 
                    >1155 *TRY NEXT OPERAND FROM TABLE3
                    >1156 
00CECF: AE 45 C8    >1157          LDX   MODE        ;RESTORE X
                    >1158 NEXTOPER                  
00CED2: CA          >1159          DEX              
00CED3: CA          >1160          DEX              ;GOTO NEXT ENTRY IN TABLE 3
00CED4: 10 C8 =CE9E >1161          BPL   NEWOPER    
                    >1162 
                    >1163 *OPCODE NOT FOUND
                    >1164 
00CED6: 38          >1165 INVPROC  SEC              ;SET ERROR CONDITION
00CED7: 60          >1166          RTS              
                    >1167 
                    >1168 *FOUND POSSIBLE OP CODE, SEE IF MODES MATCH
                    >1169 
00CED8: CD 00 C8    >1170 CHKMODE  CMP   $C800       ;DISABLE EXT RAM
00CEDB: BD 01 C8    >1171          LDA   TABLE2,X   ;GET MODE INFO FOR THIS OPCODE
00CEDE: CD 00 CF    >1172          CMP   $CF00       ;ENABLE EXT RAM
00CEE1: 29 1F       >1173          AND   #$1F        ;STRIP UNUSED STUFF
00CEE3: 0A          >1174          ASL              ;TIMES 2 BECAUSE MODE IS TIMES 2
00CEE4: CD 45 C8    >1175          CMP   MODE        ;DO MODES MATCH, IF SO FOUND OPCODE
00CEE7: D0 E3 =CECC >1176          BNE   NEXTOPCD   ;IF NO
                    >1177 
                    >1178 *FOUND OPCODE. IS IT PROCESSOR TYPE THAT IS ALLOWED.
                    >1179 
00CEE9: 8E 37 C8    >1180          STX   OPCODE      ;SAVE
00CEEC: CD 00 C8    >1181          CMP   $C800       ;DISABLE EXT RAM
00CEEF: BD 01 C8    >1182          LDA   TABLE2,X   ;GET INFO ON THIS OPCODE
00CEF2: CD 00 CF    >1183          CMP   $CF00       ;ENABLE EXT RAM
00CEF5: 29 60       >1184          AND   #$60        ;STRIP ALL BUT PROCESSOR INFO
00CEF7: F0 0B =CF04 >1185          BEQ   PROCESOK   ;IF 00=6502, MUST BE OK
00CEF9: 2C 1F C8    >1186          BIT   CMOSFLAG   ;IS 65816 ALLOWED?
00CEFC: 70 06 =CF04 >1187          BVS   PROCESOK   ;IF YES, MUST BE OK
00CEFE: 10 D6 =CED6 >1188          BPL   INVPROC     ;IF 6502 ONLY, THEN INVALID
00CF00: C9 20       >1189          CMP   #$20        ;IS INSTR 65C02?
00CF02: D0 D2 =CED6 >1190          BNE   INVPROC     ;IF NO, INVALID
                    >1191 
                    >1192 *OPCODE IS ALLOWED
                    >1193 
                    >1194 PROCESOK                  
00CF04: 18          >1195          CLC              ;CLEAR ERROR FLAG
00CF05: 60          >1196          RTS              
                    >1197 
                    >1198 * INIT LOWADD & HIADD WITH MEMLOW & MEMHI
                    >1199 * STORE THE CONTENTS OF THE ACC. & VERIFY THAT IT STORED
                    >1200 * PROPERELY RETURNS WITH Z BIT SET IF VERIFIED OK.
                    >1201 
            =CF06   >1202 INITMMV  EQU   *          
00CF06: AC 5E C9    >1203          LDY   MEMPBR     
00CF09: 8C 34 C8    >1204          STY   PBRADD     
00CF0C: AC 36 C8    >1205          LDY   MEMHI      
00CF0F: 8C 88 C8    >1206          STY   HIADD      
00CF12: AC 35 C8    >1207          LDY   MEMLOW     
00CF15: 8C 87 C8    >1208          STY   LOWADD     
00CF18: 48          >1209          PHA              
00CF19: A0 00       >1210          LDY   #0         
00CF1B: 20 AE CF    >1211          JSR   TRANSFR3   ;STA LOWADD,Y
00CF1E: 08          >1212          DFB   STAINDYC   ;CODE
00CF1F: 20 AE CF    >1213          JSR   TRANSFR3   ;LDA LOWADD,Y
00CF22: 00          >1214          DFB   LDAINDYC   ;CODE
00CF23: 8D E1 C9    >1215          STA   TEMP       
00CF26: 68          >1216          PLA              ;DID IT STORE PROPERELY?
00CF27: CD E1 C9    >1217          CMP   TEMP       
00CF2A: 60          >1218          RTS              
                    >1219 
                    >1220 * INCREMENT MEMLOW & MEMHI POINTER BY 1
                    >1221 
                    >1222 INCMEMLH                  
00CF2B: 18          >1223          CLC              
00CF2C: AD 35 C8    >1224          LDA   MEMLOW     
00CF2F: 69 01       >1225          ADC   #1         
00CF31: 8D 35 C8    >1226          STA   MEMLOW      ;INC POINTER
00CF34: AD 36 C8    >1227          LDA   MEMHI      
00CF37: 69 00       >1228          ADC   #0         
00CF39: 8D 36 C8    >1229          STA   MEMHI      
00CF3C: 60          >1230          RTS              
                    >1231 
                    >1232 * LOAD MEMLOW & MEMHI, CARRY SET ON ERROR
                    >1233 
            =CF3D   >1234 LOADMEM  EQU   *          
00CF3D: 20 AE CF    >1235          JSR   TRANSFR3   ;CHECK FOR HEX AND READ
00CF40: 09          >1236          DFB   CHKREADC   ;CODE
00CF41: B0 09 =CF4C >1237          BCS   LOADMRTS   ;CARRY SET FOR ERROR
00CF43: 8D 35 C8    >1238          STA   MEMLOW     
00CF46: AD 2B C8    >1239          LDA   LETTER2     ;LOAD POINTER
00CF49: 8D 36 C8    >1240          STA   MEMHI      
                    >1241 LOADMRTS                  
00CF4C: 60          >1242          RTS              
                    >1243 
                    >1244 ***** PACK THE MNEMONIC INTO 2 BYTES *****
                    >1245 *
                    >1246 * MNEMCOMP & MNEMCOMP+1 WILL CONTAIN THE COMPRESSED MNEMONIC
                    >1247 * EXAMPLE:  ADC  A= $C1 AND WITH #$1F = %00001
                    >1248 *                D= $C4  "   "     "  = %00100
                    >1249 *                C= $C3  "   "     "  = %00011
                    >1250 *   0 00001 00100 00011 = $0483 COMPRESSED FORM OF ADC
                    >1251 *
                    >1252 PACKMNEM                  
00CF4D: 20 59 CF    >1253          JSR   LEFT5      
00CF50: 29 1F       >1254          AND   #$1F       
00CF52: 0D 61 C9    >1255          ORA   MNEMCOMP+1 
00CF55: 8D 61 C9    >1256          STA   MNEMCOMP+1 
00CF58: 60          >1257          RTS              
                    >1258 
00CF59: 8E 41 C8    >1259 LEFT5    STX   XBUFF      
00CF5C: A2 05       >1260          LDX   #5         
00CF5E: 0E 61 C9    >1261 :LEFT    ASL   MNEMCOMP+1 
00CF61: 2E 60 C9    >1262          ROL   MNEMCOMP   
00CF64: CA          >1263          DEX              
00CF65: D0 F7 =CF5E >1264          BNE   :LEFT      
00CF67: AE 41 C8    >1265          LDX   XBUFF      
00CF6A: 60          >1266          RTS              
                    >1267 
                    >1268 * GET THE BYTE POINTED TO BY LOWADD,Y
                    >1269 
00CF6B: 20 AE CF    >1270 GETBYTE  JSR   TRANSFR3   ;GET BYTE FROM PROGRAM RAM
00CF6E: 00          >1271          DFB   LDAINDYC   ;CODE
00CF6F: 60          >1272          RTS              
                    >1273 
                    >1274 ******* SAVE THE ACC, X AND P REGISTERS *****
                    >1275 
                    >1276 SAVEAXP3                  
00CF70: 08          >1277          PHP              ;SAVE STATUS
00CF71: 8E 05 C9    >1278          STX   XSAVESEG   
00CF74: 8D 04 C9    >1279          STA   ASAVESEG   
00CF77: 68          >1280          PLA              
                    >1281 *GET STATUS
00CF78: 8D 06 C9    >1282          STA   PSAVESEG   ;SAVE
00CF7B: 60          >1283          RTS              
                    >1284 
                    >1285 ****** RESTORE THE ACC, X AND P REGISTERS *****
                    >1286 
                    >1287 RESTAXP3                  
00CF7C: AE 05 C9    >1288          LDX   XSAVESEG   
00CF7F: AD 06 C9    >1289          LDA   PSAVESEG   
00CF82: 48          >1290          PHA              
00CF83: AD 04 C9    >1291          LDA   ASAVESEG   
00CF86: 28          >1292          PLP              
00CF87: 60          >1293          RTS              
                    >1294 
                    >1295 ***** THIS SEGMENTS GLOBAL SUBROUTINES *****
                    >1296 
                    >1297 SUBTABL3                  
                    >1298 
            =0103   >1299 INITMMVC EQU   *-SUBTABL3*4+3+$100 
00CF88: 05 CF       >1300          DA    INITMMV-1  
                    >1301 
            =010B   >1302 DECMEMLHC EQU  *-SUBTABL3*4+3+$100 
00CF8A: 89 CE       >1303          DA    DECMEMLH-1 
                    >1304 
            =0113   >1305 INCMEMLHC EQU  *-SUBTABL3*4+3+$100 
00CF8C: 2A CF       >1306          DA    INCMEMLH-1 
                    >1307 
            =011B   >1308 LOADMEMC EQU   *-SUBTABL3*4+3+$100 
00CF8E: 3C CF       >1309          DA    LOADMEM-1  
                    >1310 
            =0123   >1311 DISASMC  EQU   *-SUBTABL3*4+3+$100 
00CF90: 1E CC       >1312          DA    DISASM-1   
                    >1313 
                    >1314 **********************************
                    >1315 ***** SEGMENT CROSSOVER AREA *****
                    >1316 **********************************
                    >1317 
            =000B   >1319 S3END    =     $CF9D-*    
                    >1320          do    nolist     
                    >1321          LST   OFF        
                    >1322          fin              
                    >1323          ERR   *-1/$CF9D  
00CF92: FF FF FF FF >1324          DS    $CF9D-*,$FF 
                    >1325 
00CF9D: 20 70 CF    >1326 MAIN103  JSR   SAVEAXP3   ;COME HERE TO TRANSFER TO SEGMENT0 DIRECTLY
00CFA0: AE 23 C8    >1327          LDX   SLOTN0     
00CFA3: A9 05       >1328          LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >1329          STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 7C CF    >1330          JSR   RESTAXP3   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >1331          RTS              ;GOTO COMMANDS IN THIS SEGMENT
00CFAC: EA          >1332          NOP              
00CFAD: EA          >1333          NOP              ;MATCH LENGTH WITH SEG 5
                    >1334 
                    >1335 * TRANSFER TO OTHER SEGMENTS
                    >1336 
                    >1337 TRANSFR3                  
                    >1338 
00CFAE: 20 70 CF    >1339          JSR   SAVEAXP3   
00CFB1: 68          >1340          PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >1341          CLC              
00CFB3: 69 01       >1342          ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >1343          STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >1344          PLA              
00CFB9: 69 00       >1345          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1346          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1347          PHA              
00CFBF: AD DE C9    >1348          LDA   TEMPSEG    
00CFC2: 48          >1349          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 03       >1350          LDA   #3          ;CURRENT SEG #
00CFC5: 48          >1351          PHA              
00CFC6: 20 DD C9    >1352          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1353          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1354          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1355          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1356          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1357 * NEW SEGMENT
00CFD4: A9 CF       >1358          LDA   #>RETURN3  ;WHERE TO RETURN TO
00CFD6: 48          >1359          PHA              
00CFD7: A9 ED       >1360          LDA   #RETURN3   
00CFD9: 48          >1361          PHA              
00CFDA: AD 44 C8    >1362          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1363          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1364          LSR              
00CFE0: 4A          >1365          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1366 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1367          TAX              
00CFE2: BD 89 CF    >1368          LDA   SUBTABL3+1,X 
00CFE5: 48          >1369          PHA              
00CFE6: BD 88 CF    >1370          LDA   SUBTABL3,X 
00CFE9: 48          >1371          PHA              
                    >1372 
00CFEA: 20 7C CF    >1373          JSR   RESTAXP3   ;RESTORE REGISTERS
00CFED: 60          >1374          RTS              ;USE RTS TO GOTO SUB
                    >1375 
                    >1376 * RETURN HERE FROM SUBROUTINE
                    >1377 
            =CFED   >1378 RETURN3  EQU   *-1        
00CFEE: 20 70 CF    >1379          JSR   SAVEAXP3   
00CFF1: 68          >1380          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1381          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1382          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 7C CF    >1383          JSR   RESTAXP3   
00CFFB: 60          >1384          RTS              ;RETURN TO PROGRAM
                    >1385 
00CFFC: FF FF FF FF >1386          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     25            PUT   SEG4       
                    >2    ********************
                    >3    * SFOURFONE
                    >4    ********************
                    >5             ORG   $C800      
                    >6    
                    >7    *************** MESSAGES *************
                    >8    
                    >9    * MESSAGE FOR SKIP
                    >10   
00C800: D3 CB C9 D0 >11   MSGSKIP  ASC   "SKIP"     
00C804: 8D 84       >12            DFB   CR,EOT     
                    >13   
                    >14   * MESSAGE FOR COMDKEY
                    >15   
00C806: 8D          >16   MSGKEY   DFB   CR         
00C807: CB C5 D9 A0 >17            ASC   "KEY = "   
00C80D: 84          >18            DFB   EOT        
                    >19   
                    >20   MSGBROUT                  
00C80E: 8D          >21            DFB   CR         
00C80F: C2 D2 C1 CE >22            ASC   "BRANCH OUT OF RANGE" 
00C822: 87 8D 84    >23            DFB   BEL,CR,EOT 
                    >24   
                    >25   MSGNOTRM                  
00C825: 8D          >26            DFB   CR         
00C826: AA AA C1 C3 >27            ASC   "**ACCESS ERROR**" 
00C836: 87 8D 84    >28            DFB   BEL,CR,EOT 
                    >29   
00C839: 8D          >30   MSGHARD  DFB   CR         
00C83A: C8 C1 D2 C4 >31            ASC   "HARD BREAK" 
00C844: 8D 84       >32            DFB   CR,EOT     
                    >33   
00C846: 8D          >34   MSGORNG  DFB   CR         
00C847: CF D5 D4 D3 >35            ASC   "OUTSIDE RANGE LIMITS" 
00C85B: 87 8D 84    >36            DFB   BEL,CR,EOT 
                    >37   
00C85E: 8D          >38   MSGNOAC  DFB   CR         
00C85F: CE CF A0 C1 >39            ASC   "NO ACCESS HALT" 
00C86D: 87 84       >40            DFB   BEL,EOT    
                    >41   
                    >42   * DISPLAY TABLE, FORMAT- ASCII, LOW BYTE OF SWITCH(S) ADDRS
                    >43   
                    >44   DISPTABL                  
00C86F: B1 D4       >45            DFB   "1",$54+$80 
00C871: B2 D5       >46            DFB   "2",$55+$80 
00C873: B4 8C       >47            DFB   "4",$0C+$80 
00C875: B8 8D       >48            DFB   "8",$0D+$80 
00C877: D4 5F D1    >49            DFB   "T",$5F,$51+$80 
00C87A: C1 8F       >50            DFB   "A",$0F+$80 
00C87C: CE 8E       >51            DFB   "N",$0E+$80 
00C87E: C6 D2       >52            DFB   "F",$52+$80 
00C880: CD D3       >53            DFB   "M",$53+$80 
00C882: CC 56 D0    >54            DFB   "L",$56,$50+$80 
00C885: C8 57 D0    >55            DFB   "H",$57,$50+$80 
00C888: C4 57 50 5E >56            DFB   "D",$57,$50,$5E,$0D+$80 
00C88D: FF          >57            DFB   $FF        
                    >58   
                    >59   ****************************************
                    >60   * BANKTABL IS USED BY BANKCHEK SUBROUTINE
                    >61   * TO DETERMINE WHICH BANK THE CURRENT PC IS IN.
                    >62   *
                    >63   * PATTERN: AABBCC
                    >64   * AA= LOWER LIMIT OF PC HI BYTE
                    >65   * BB= PATTERN TO LOOK FOR IN MSTATE
                    >66   * CC= BIT=0=DON'T CARE 
                    >67   ****************************************
                    >68   
00C88E: 00 00 00    >69            HEX   000000      ;LOWEST LIMIT
                    >70   BANKTABL                  ;MSTATE BIT CONDITION
00C891: 00 80 80    >71            HEX   008080      ;7=1
00C894: 02 40 40    >72            HEX   024040      ;6=1
00C897: 04 40 42    >73            HEX   044042      ;6=1 1=0
00C89A: 04 06 06    >74            HEX   040606      ;2=1 1=1
00C89D: 08 40 40    >75            HEX   084040      ;6=1
00C8A0: 20 40 60    >76            HEX   204060      ;6=1 5=0
00C8A3: 20 44 44    >77            HEX   204444      ;6=1 2=1
00C8A6: 20 40 42    >78            HEX   204042      ;6=1 1=0
00C8A9: 20 26 26    >79            HEX   202626      ;5=1 2=1 1=1
00C8AC: 40 40 40    >80            HEX   404040      ;6=1
00C8AF: C1 01 01    >81            HEX   C10101      ;0=1
00C8B2: D0 80 80    >82            HEX   D08080      ;7=1
                    >83   
                    >84   **** EFFECTIVE ADDRESS ROUTINES
                    >85   
00C8B5: 3C CE       >86   EFFTABL  DA    NOEFF-1     ;MODE 0 (IMED) NO EFF ADRS
00C8B7: 0A CE       >87            DA    BANKEFF-1  ;MODE 1 (ABS) CALC EFF BANK ONLY
00C8B9: 3C CE       >88            DA    NOEFF-1     ;MODE 2 (ABS.L) USE AS IS
00C8BB: 0A CE       >89            DA    BANKEFF-1  ;MODE 3 (DIR) CALC EFF BANK ONLY
00C8BD: 3C CE       >90            DA    NOEFF-1     ;MODE 4 (ACC;IMP;STK) NO EFF ADRS
00C8BF: 3D CE       >91            DA    EFFM5-1     ;MODE 5
00C8C1: 52 CE       >92            DA    EFFM6-1     ;MODE 6
00C8C3: 6E CE       >93            DA    EFFM7-1     ;MODE 7
00C8C5: 5D CE       >94            DA    EFFM8-1     ;MODE 8
00C8C7: 69 CE       >95            DA    EFFM9-1     ;MODE 9
00C8C9: 84 CE       >96            DA    EFFMA-1     ;MODE A
00C8CB: 93 CE       >97            DA    EFFMB-1     ;MODE B
00C8CD: 9E CE       >98            DA    EFFMC-1     ;MODE C
00C8CF: 3C CE       >99            DA    NOEFF-1     ;MODE D NOT USED
00C8D1: 3C CE       >100           DA    NOEFF-1     ;MODE E NOT USED
00C8D3: A3 CE       >101           DA    EFFMF-1     ;MODE F
00C8D5: 7F CE       >102           DA    EFFM10-1   ;MODE $10
00C8D7: DC CE       >103           DA    EFFM11-1   ;MODE $11
00C8D9: C8 CE       >104           DA    EFFM12-1   ;MODE $12
00C8DB: E5 CE       >105           DA    EFFM13-1   ;MODE $13
00C8DD: F4 CE       >106           DA    EFFM14-1   ;MODE $14
                    >107  
                    >108  ****************************************
                    >109  * THIS POINT MUST BE $CA00 OR ABOVE.
                    >110  ****************************************
                    >111  
00C8DF: FF FF FF FF >112           DS    $CA00-*,$FF 
                    >113  
                    >114  ******************************
                    >115  *  COMD> - SKIP NEXT INSTRUCTION
                    >116  ******************************
                    >117  
                    >118  COMDSKIP                  
00CA00: 38          >119           SEC              ;ADD EXTRA 1
00CA01: AD 5F C9    >120           LDA   NUMDISP     ;# BYTES IN CURRENT INST - 1
00CA04: 6D 1B C8    >121           ADC   PCLO        ;SKIP IT
00CA07: 8D 1B C8    >122           STA   PCLO       
00CA0A: AD 1C C8    >123           LDA   PCHI       
00CA0D: 69 00       >124           ADC   #0          ;ADD CARRY IF ANY
00CA0F: 8D 1C C8    >125           STA   PCHI       
                    >126  
00CA12: 20 1F CB    >127           JSR   WRINIT4    
00CA15: B9 00 C8    >128  :MORE    LDA   MSGSKIP,Y  ;DISPLAY "SKIP"
00CA18: 20 29 CB    >129           JSR   WRITECK4   
00CA1B: 90 F8 =CA15 >130           BCC   :MORE      
                    >131  
00CA1D: 20 AE CF    >132           JSR   TRANSFR4   ;DISPLAY NEW LOCATION
00CA20: 12          >133           DFB   INITDISRC  ;code
00CA21: A9 80       >134           LDA   #$80       
00CA23: 8D 9E C8    >135           STA   TFLAG       ;RESTORE TRACE MODE
00CA26: 4C 9D CF    >136           JMP   MAIN104    
                    >137  
                    >138  ******************************
                    >139  *  COMDKEY - SET KEY
                    >140  ******************************
                    >141  
00CA29: 20 1F CB    >142  COMDKEY  JSR   WRINIT4     ;DISPLAY "KEY = "
00CA2C: B9 06 C8    >143  :MORE    LDA   MSGKEY,Y   ;GET CHAR
00CA2F: 20 29 CB    >144           JSR   WRITECK4   ;DISPLAY
00CA32: 90 F8 =CA2C >145           BCC   :MORE      
00CA34: 20 AE CF    >146           JSR   TRANSFR4   ;READ KEYBOARD
00CA37: 17          >147           DFB   RDCHARC     ;code
00CA38: 8D 31 C9    >148           STA   KEY         ;SET KEY
00CA3B: 4C 9D CF    >149           JMP   MAIN104    
                    >150  
00CA3E: A9 04       >151  ERROR4   LDA   #BADPAR     ;ERROR NUMBER
00CA40: 20 AE CF    >152           JSR   TRANSFR4   ;DO ERROR
00CA43: 35          >153           DFB   ERRBEEPC   ;code
00CA44: 4C 9D CF    >154           JMP   MAIN104    
                    >155  
                    >156  ******************************
                    >157  *  COMDSS - SET SWITCH
                    >158  ******************************
                    >159  
00CA47: F0 F5 =CA3E >160  COMDSS   BEQ   ERROR4     
00CA49: 20 AE CF    >161           JSR   TRANSFR4   ;READ ADDRESS INTO LETTER 1
00CA4C: 09          >162           DFB   CHKREADC   ;code
00CA4D: B0 EF =CA3E >163           BCS   ERROR4      ;IF NOT VALID
00CA4F: 20 AE CF    >164           JSR   TRANSFR4   ;RESTORE CURRENT SWITCHES
00CA52: 16          >165           DFB   RESTTEXTC  ;code
00CA53: AD 16 C0    >166           LDA   ALTZP       ;CURRENT ALTZP STATUS
00CA56: 8D 18 C9    >167           STA   INDYBUF     ;SAVE
                    >168  * WATCH OUT FOR CX ROM
00CA59: AD 2A C8    >169           LDA   LETTER1    
00CA5C: C9 06       >170           CMP   #$06        ;TURN CXROM OFF?
00CA5E: F0 07 =CA67 >171           BEQ   :CXOFF      ;IF YES
00CA60: C9 07       >172           CMP   #$07        ;TURN CXROM ON?
00CA62: D0 0A =CA6E >173           BNE   :NOTCX      ;IF NO
                    >174  *CXON
00CA64: 38          >175           SEC              
00CA65: B0 01 =CA68 >176           BCS   :SETCX     
00CA67: 18          >177  :CXOFF   CLC              ;CX OFF
00CA68: 6E 2F C9    >178  :SETCX   ROR   CXSTATUS   ;SET CX
00CA6B: 4C A5 CA    >179           JMP   :SET        ;CONTINUE
                    >180  
00CA6E: AA          >181  :NOTCX   TAX              
00CA6F: 9D 00 C0    >182           STA   $C000,X     ;SET SWITCH
00CA72: BD 00 C0    >183           LDA   $C000,X     ;NEEDED FOR LANGUAGE CARD SWITCH
00CA75: BD 00 C0    >184           LDA   $C000,X     ; ditto
                    >185  
                    >186  * DID WE JUST SWITCH STACKS ?
00CA78: AD 18 C9    >187           LDA   INDYBUF     ;OLD ALTZP
00CA7B: 4D 16 C0    >188           EOR   ALTZP       ;IS IT CHANGED ?
00CA7E: 10 25 =CAA5 >189           BPL   :SET        ;IF NOT
                    >190  
                    >191  * SAVE NEW STACK TO EXT STACK BUFFER
00CA80: A9 FF       >192           LDA   #$FF       
00CA82: 48          >193           PHA              ;NUMBER OF BYTES TO SAVE
00CA83: AE 17 C8    >194           LDX   STACK       ;STACK POINTER
00CA86: AC 23 C8    >195           LDY   SLOTN0     
                    >196  **********************************
                    >197  * WARNING, SEGMENT DEPENDENT CODE   
                    >198  **********************************
00CA89: A9 74       >199           LDA   #%01110100 ;RAM 7, ROM 4
00CA8B: 99 80 C0    >200           STA   SEGMBASE,Y 
                    >201  
00CA8E: 8C 15 C8    >202           STY   YREG        ;SAVE IN RAM7
00CA91: 68          >203           PLA              ;NUMBER OF BYTES TO SAVE
00CA92: A8          >204           TAY              
00CA93: E8          >205  :NEXT    INX              
00CA94: BD 00 01    >206           LDA   $0100,X     ;GET FROM STACK
00CA97: 9D 00 C9    >207           STA   STACKBUF,X ;SAVE IN EXT STACK BUFFER
00CA9A: 88          >208           DEY              
00CA9B: D0 F6 =CA93 >209           BNE   :NEXT      
                    >210  
00CA9D: AC 15 C8    >211           LDY   YREG        ;SLOTN0
                    >212  ***********************************
                    >213  * WARNING, SEGMENT DEPENDENT CODE
                    >214  ***********************************
00CAA0: A9 04       >215           LDA   #%00000100 ;RAM 0, ROM 4
00CAA2: 99 80 C0    >216           STA   SEGMBASE,Y 
                    >217  
00CAA5: 20 AE CF    >218  :SET     JSR   TRANSFR4   ;SAVE NEW SWITCHES
00CAA8: 26          >219           DFB   ZPAGSAVEC  ;code
                    >220  * UPDATE RAMRD AND RAMWRT BUFFERS
00CAA9: AD 13 C0    >221           LDA   RAMRD       ;AUX OR MAIN READ
00CAAC: 8D 29 C9    >222           STA   RAMRDBF    
00CAAF: AD 14 C0    >223           LDA   RAMWRT      ;AUX OR MAIN WRITE
00CAB2: 8D 2A C9    >224           STA   RAMWRTBF   
                    >225  
                    >226  * RECALCULATE BANK
00CAB5: 20 B7 CD    >227           JSR   BANKCHEK   
00CAB8: 8D 1D C8    >228           STA   PBR        
                    >229  
00CABB: 20 AE CF    >230           JSR   TRANSFR4   ;RESET SCREEN SWITCHES
00CABE: 87          >231           DFB   SETSCRNC   ;code
00CABF: 20 AE CF    >232           JSR   TRANSFR4   ;UPDATE DISPLAY
00CAC2: D7          >233           DFB   DISFMESC   ;code
00CAC3: 20 AE CF    >234           JSR   TRANSFR4   ;SET WINDDR
00CAC6: 32          >235           DFB   WINDDRC     ;code
00CAC7: 4C 9D CF    >236           JMP   MAIN104    
                    >237  
                    >238  * DISPLAY BRANCH OUT OF RANGE
                    >239  
                    >240  DISBROUT                  
00CACA: 20 1F CB    >241           JSR   WRINIT4    
00CACD: B9 0E C8    >242  :MORE    LDA   MSGBROUT,Y ;GET CHAR
00CAD0: 20 29 CB    >243           JSR   WRITECK4   ;DISPLAY
00CAD3: 90 F8 =CACD >244           BCC   :MORE      
00CAD5: 60          >245           RTS              
                    >246  
                    >247  * DISPLAY NOT RAM MESSAGE
                    >248  
                    >249  DISNOTRM                  
00CAD6: 20 1F CB    >250           JSR   WRINIT4    
00CAD9: B9 25 C8    >251  :MORE    LDA   MSGNOTRM,Y ;GET CHAR
00CADC: 20 29 CB    >252           JSR   WRITECK4   ;DISPLAY
00CADF: 90 F8 =CAD9 >253           BCC   :MORE      
00CAE1: 60          >254           RTS              
                    >255  
                    >256  * DISPLAY HARDWARE
                    >257  
                    >258  DISHARD                   
00CAE2: 20 1F CB    >259           JSR   WRINIT4    
00CAE5: B9 39 C8    >260  :MORE    LDA   MSGHARD,Y  ;GET CHAR
00CAE8: 20 29 CB    >261           JSR   WRITECK4   ;DISPLAY
00CAEB: 90 F8 =CAE5 >262           BCC   :MORE      
00CAED: 60          >263           RTS              
                    >264  
                    >265  OUTPRGR                   
                    >266  * IF PC IS IN OUR SLOT I/O SPACE THEN IT'S OK
00CAEE: AD 1C C8    >267           LDA   PCHI       
00CAF1: C9 C0       >268           CMP   #$C0       
00CAF3: D0 12 =CB07 >269           BNE   :NOTOK     
00CAF5: AD 23 C8    >270           LDA   SLOTN0     
00CAF8: 18          >271           CLC              
00CAF9: 69 8F       >272           ADC   #$8F        ;OUR SLOT I/O LOWER BYTE
00CAFB: CD 1B C8    >273           CMP   PCLO       
00CAFE: 90 07 =CB07 >274           BLT   :NOTOK     
00CB00: E9 10       >275           SBC   #$10       
00CB02: CD 1B C8    >276           CMP   PCLO       
00CB05: 90 0B =CB12 >277           BLT   :OK         ;C=0 IF OK
                    >278                            
00CB07: 20 1F CB    >279  :NOTOK   JSR   WRINIT4    
00CB0A: B9 46 C8    >280  :MORE    LDA   MSGORNG,Y  ;GET CHAR
00CB0D: 20 29 CB    >281           JSR   WRITECK4   ;DISPLAY
00CB10: 90 F8 =CB0A >282           BCC   :MORE      
00CB12: 60          >283  :OK      RTS              
                    >284  
00CB13: 20 1F CB    >285  NOACMSG  JSR   WRINIT4    
00CB16: B9 5E C8    >286  :MORE    LDA   MSGNOAC,Y  ;GET CHAR
00CB19: 20 29 CB    >287           JSR   WRITECK4   ;DISPLAY
00CB1C: 90 F8 =CB16 >288           BCC   :MORE      
00CB1E: 60          >289           RTS              
                    >290  
                    >291  * THIS ROUTINE MUST BE ABOVE $CF00
                    >292  
00CB1F: 8C 3F C8    >293  WRINIT4  STY   YBUFF       ;SAVE
00CB22: A0 00       >294           LDY   #0         
                    >295  WRITMOR4                  
00CB24: 2C 00 C8    >296           BIT   $C800       ;DISABLE EXT RAM
00CB27: 18          >297           CLC              
00CB28: 60          >298           RTS              
                    >299  WRITECK4                  
00CB29: 2C 00 CF    >300           BIT   $CF00       ;ENABLE EXT RAM
00CB2C: C8          >301           INY              ;NEXT CHARACTER
00CB2D: C9 84       >302           CMP   #EOT        ;FINISHED?
00CB2F: F0 07 =CB38 >303           BEQ   WRITDON4   ;IF YES, CARRY ALSO SET
00CB31: 20 AE CF    >304           JSR   TRANSFR4   ;DISPLAY CHARACTER
00CB34: 07          >305           DFB   COUTC       ;CODE
00CB35: 4C 24 CB    >306           JMP   WRITMOR4   
                    >307  WRITDON4                  
00CB38: AC 3F C8    >308           LDY   YBUFF       ;RESTORE
00CB3B: 60          >309           RTS              
                    >310  
                    >311  * INITIALIZE THE DISPLAY WINDOW TO FULL SCREEN
                    >312  
00CB3C: A9 00       >313  WINDFUL  LDA   #0         
00CB3E: 8D 55 C9    >314           STA   WINDLEFT   
00CB41: 8D 57 C9    >315           STA   WINDTOP    
00CB44: 8D 59 C9    >316           STA   CURSHORZ   
00CB47: A9 50       >317           LDA   #80        
00CB49: 8D 56 C9    >318           STA   WINDWDTH   
00CB4C: A9 18       >319           LDA   #24        
00CB4E: 8D 58 C9    >320           STA   WINDBTM    
00CB51: 20 AE CF    >321           JSR   TRANSFR4   ;SET BASL & CLEAR HOME
00CB54: 97          >322           DFB   CLRHOMEC   ;CODE
                    >323  
00CB55: 38          >324           SEC              
00CB56: 6E A4 C8    >325           ROR   WINDFLG     ;indicate windows are off
                    >326                            
00CB59: 60          >327           RTS              
                    >328  
                    >329  ******************************
                    >330  * COMDSD - SET DISPLAY SWITCH
                    >331  ******************************
                    >332  
00CB5A: F0 27 =CB83 >333  COMDSD   BEQ   SDERR       ;IF NO CHAR FOLLOWS
                    >334  
                    >335  * SET THE DISPLAY SWITCHES
                    >336  * ACC CONTAINS COMMAND LETTER
                    >337  
00CB5C: A2 00       >338           LDX   #0         
00CB5E: 8D 64 C9    >339           STA   SELFMOD     ;SAVE COMMAND LETTER
00CB61: 8D 00 C8    >340           STA   $C800       ;SELECT EXT ROM
00CB64: BD 6F C8    >341           LDA   DISPTABL,X ;GET COMMAND LETTER FROM TABLE
00CB67: 8D 00 CF    >342           STA   $CF00       ;SELECT EXT RAM
00CB6A: CD 64 C9    >343  :LOOK    CMP   SELFMOD     ;IS IT THIS COMMAND
00CB6D: F0 17 =CB86 >344           BEQ   MATCH       ;IF YES
00CB6F: 8D 00 C8    >345           STA   $C800       ;SELECT EXT ROM
00CB72: E8          >346  :LOOP    INX              
00CB73: BD 6F C8    >347           LDA   DISPTABL,X ;GO TO NEXT COMMAND LETTER
00CB76: 10 FA =CB72 >348           BPL   :LOOP      
00CB78: E8          >349           INX              
00CB79: BD 6F C8    >350           LDA   DISPTABL,X 
00CB7C: 8D 00 CF    >351           STA   $CF00       ;SELECT EXT RAM
00CB7F: C9 FF       >352           CMP   #$FF        ;END OF TABLE ?
00CB81: D0 E7 =CB6A >353           BNE   :LOOK       ;IF NO
                    >354  
00CB83: 4C 3E CA    >355  SDERR    JMP   ERROR4      ;INDICATE ERROR & GOTO MAIN10
                    >356  
                    >357  * SET THE PROPER SWITCHES
                    >358  * USE SELF MODIFING CODE
                    >359  
00CB86: A9 8D       >360  MATCH    LDA   #$8D        ;STA abs OPCODE
00CB88: 8D 64 C9    >361           STA   SELFMOD    
00CB8B: A9 C0       >362           LDA   #$C0        ;HI BYTE OF SWITCH ADDRESS
00CB8D: 8D 66 C9    >363           STA   SELFMOD+2  
00CB90: A9 60       >364           LDA   #$60        ;RTS OPCODE
00CB92: 8D 67 C9    >365           STA   SELFMOD+3  
                    >366  
00CB95: 8E 65 C9    >367           STX   SELFMOD+1  ;SAVE
00CB98: AD 1E C8    >368           LDA   INVISIBL   ;INVISIBLE MODE FLAG
00CB9B: 48          >369           PHA              ;SAVE
                    >370  
                    >371  * TURN EXT DISPLAY OFF
00CB9C: 20 AE CF    >372           JSR   TRANSFR4   ;RESTORE TEXT & DISPLAY SWITCHES
00CB9F: 16          >373           DFB   RESTTEXTC  ;code
00CBA0: A9 80       >374           LDA   #$80       
00CBA2: 8D 21 C8    >375           STA   OFFFLAG     ;TURN OFF EXT DISPLAY
                    >376  
00CBA5: A9 00       >377  :ISOFF   LDA   #0         
00CBA7: 8D 1E C8    >378           STA   INVISIBL   ;CLEAR IF SET
00CBAA: 20 AE CF    >379           JSR   TRANSFR4   ;RESTORE DISPLAY SWITCHES
00CBAD: 1E          >380           DFB   RESTDISPC  ;code
00CBAE: AE 65 C9    >381           LDX   SELFMOD+1  ;RESTORE
                    >382  
00CBB1: 8D 00 C8    >383  :NEXTS   STA   $C800       ;SELECT EXT ROM
00CBB4: E8          >384           INX              
00CBB5: BD 6F C8    >385           LDA   DISPTABL,X ;LOW BYTE OF SWITCH
00CBB8: 8D 00 CF    >386           STA   $CF00       ;SELECT EXT RAM
00CBBB: 08          >387           PHP              ;SAVE N FLAG
00CBBC: 29 7F       >388           AND   #$7F        ;STRIP BIT 7
00CBBE: 8D 65 C9    >389           STA   SELFMOD+1  ;PUT IN ROUTINE
00CBC1: 20 64 C9    >390           JSR   SELFMOD     ;SET SWITCH
00CBC4: 28          >391           PLP              ;WAS IT LAST SWITCH
00CBC5: 10 EA =CBB1 >392           BPL   :NEXTS      ;IF NO
00CBC7: 20 AE CF    >393           JSR   TRANSFR4   ;SAVE NEW DISPLAY SWITCHES
00CBCA: 2E          >394           DFB   SAVEDISPC  ;code
00CBCB: 68          >395           PLA              ;GET INVISIBL MODE FLAG
00CBCC: 8D 1E C8    >396           STA   INVISIBL   ;RESTORE
00CBCF: 4C 9D CF    >397           JMP   MAIN104    
                    >398  
                    >399  ******************************
                    >400  * COMDPW - PROTECTION WINDOW
                    >401  ******************************
                    >402  
00CBD2: A2 1E       >403  COMDPW   LDX   #5*6        ;0-5 BUFFFERS 6 BYTES EACH BUFFER
00CBD4: 8E 2A C8    >404           STX   LETTER1     ;SAVE
00CBD7: 20 AE CF    >405           JSR   TRANSFR4   ;DISPLAY PROT WINDOW
00CBDA: C7          >406           DFB   DISPROTWC  ;code
00CBDB: 20 AE CF    >407           JSR   TRANSFR4   ;HOME
00CBDE: 9F          >408           DFB   HOMEC       ;code
00CBDF: A9 A0       >409           LDA   #$A0        ;SPACE
00CBE1: 8D 32 C9    >410           STA   PROMPT     
00CBE4: AD 20 C8    >411  PWINPUT  LDA   IOMODE      ;ARE WE IN SERIAL or printer MODE ?
00CBE7: F0 3F =CC28 >412           BEQ   :NOSER      ;IF NOT
                    >413  * DISPLAY CURRENT PW INFO IF SERIAL OR PRINTER
00CBE9: AE 2A C8    >414           LDX   LETTER1    
00CBEC: BD D7 C8    >415           LDA   PROTADR,X  ;GET PROTECTION TYPE
00CBEF: 20 AE CF    >416           JSR   TRANSFR4   ;DISPLAY
00CBF2: 07          >417           DFB   COUTC       ;code
00CBF3: BD D8 C8    >418           LDA   PROTADR+1,X 
00CBF6: 20 AE CF    >419           JSR   TRANSFR4   ;PRINT BYTE
00CBF9: 37          >420           DFB   PRBYTEC     ;code
00CBFA: A9 AF       >421           LDA   #"/"       
00CBFC: 20 AE CF    >422           JSR   TRANSFR4   
00CBFF: 07          >423           DFB   COUTC      
00CC00: BD D9 C8    >424           LDA   PROTADR+2,X 
00CC03: 20 AE CF    >425           JSR   TRANSFR4   
00CC06: 37          >426           DFB   PRBYTEC     ;code
00CC07: BD DA C8    >427           LDA   PROTADR+3,X 
00CC0A: 20 AE CF    >428           JSR   TRANSFR4   
00CC0D: 37          >429           DFB   PRBYTEC     ;code
00CC0E: A9 AE       >430           LDA   #"."       
00CC10: 20 AE CF    >431           JSR   TRANSFR4   
00CC13: 07          >432           DFB   COUTC       ;code
00CC14: BD DB C8    >433           LDA   PROTADR+4,X 
00CC17: 20 AE CF    >434           JSR   TRANSFR4   
00CC1A: 37          >435           DFB   PRBYTEC     ;code
00CC1B: BD DC C8    >436           LDA   PROTADR+5,X 
00CC1E: 20 AE CF    >437           JSR   TRANSFR4   
00CC21: 37          >438           DFB   PRBYTEC     ;code 
00CC22: A9 A0       >439           LDA   #" "       
00CC24: 20 AE CF    >440           JSR   TRANSFR4   
00CC27: 07          >441           DFB   COUTC       ;code
                    >442  
00CC28: 20 AE CF    >443  :NOSER   JSR   TRANSFR4   ;GET LINE
00CC2B: 57          >444           DFB   GETLNC      ;code
00CC2C: B0 76 =CCA4 >445           BCS   :END       ;if <esc> key
00CC2E: E8          >446           INX              
00CC2F: 8E E1 C9    >447           STX   TEMP        ;IN POINTER
00CC32: A0 00       >448           LDY   #0         
00CC34: 20 10 CD    >449           JSR   GETCHAR     ;GET FROM IN,Y
00CC37: F0 44 =CC7D >450           BEQ   :CR         ;IF <CR>
00CC39: C9 D4       >451           CMP   #"T"        ;TRACE RANGE ?
00CC3B: F0 0C =CC49 >452           BEQ   :SAVETYPE  ;IF YES
00CC3D: C9 D0       >453           CMP   #"P"        ;PROGRAM ONLY RANGE ?
00CC3F: F0 08 =CC49 >454           BEQ   :SAVETYPE  ;IF YES
00CC41: C9 CE       >455           CMP   #"N"        ;NO ACCESS RANGE ?
00CC43: F0 04 =CC49 >456           BEQ   :SAVETYPE  ;IF YES
00CC45: C9 A0       >457           CMP   #$A0        ;SPACE MEANS REMOVE TYPE
00CC47: D0 30 =CC79 >458           BNE   :ERROR      ;IF NO
                    >459  :SAVETYPE                 
00CC49: AE 2A C8    >460           LDX   LETTER1     ;PROTADR POINTER
00CC4C: 9D D7 C8    >461           STA   PROTADR,X  ;SAVE TYPE
                    >462  * LOAD IN 1 BYTE OF PROTADR ADDRESS, LOOP UNTIL DONE
00CC4F: E8          >463  :PRBYT   INX              ;NEXT BYTE
00CC50: 20 10 CD    >464           JSR   GETCHAR     ;READ IN,Y
00CC53: F0 28 =CC7D >465           BEQ   :CR         ;IF <CR>
00CC55: 20 F7 CC    >466           JSR   CHKHEX      ;CONVERT TO HEX
00CC58: B0 1F =CC79 >467           BCS   :ERROR      ;IF NOT HEX
00CC5A: 20 DD CC    >468           JSR   MSNYBPW     ;UPDATE MS NYBBLE OF DATA
00CC5D: 20 10 CD    >469           JSR   GETCHAR     ;READ IN,Y
00CC60: F0 1B =CC7D >470           BEQ   :CR        
00CC62: 20 F7 CC    >471           JSR   CHKHEX     
00CC65: B0 12 =CC79 >472           BCS   :ERROR     
00CC67: 20 E6 CC    >473           JSR   LSNYBPW     ;UPDATE LS NYBBLE OF DATA
00CC6A: C0 03       >474           CPY   #3          ;SKIP "/" ?
00CC6C: F0 04 =CC72 >475           BEQ   :SKIP       ;IF YES
00CC6E: C0 08       >476           CPY   #8          ;SKIP "." ?
00CC70: D0 DD =CC4F >477           BNE   :PRBYT     
00CC72: 20 10 CD    >478  :SKIP    JSR   GETCHAR    
00CC75: F0 06 =CC7D >479           BEQ   :CR        
00CC77: D0 D6 =CC4F >480           BNE   :PRBYT     
00CC79: 20 AE CF    >481  :ERROR   JSR   TRANSFR4   ;RING BELL
00CC7C: 77          >482           DFB   BELLC       ;code
00CC7D: AD 5A C9    >483  :CR      LDA   CURSVERT   ;SAVE CURRENT POSITION
00CC80: 48          >484           PHA              
00CC81: 20 AE CF    >485           JSR   TRANSFR4   ;UPDATE PROT WINDOW
00CC84: C7          >486           DFB   DISPROTWC  ;code
00CC85: 68          >487           PLA              
00CC86: 8D 5A C9    >488           STA   CURSVERT   ;RESTORE POSITION
00CC89: A9 00       >489           LDA   #0         
00CC8B: 8D 59 C9    >490           STA   CURSHORZ   ;LEFT EDGE
00CC8E: 20 AE CF    >491           JSR   TRANSFR4   ;RESTORE BAS
00CC91: 8F          >492           DFB   VTABC       ;code
00CC92: AE 2A C8    >493           LDX   LETTER1     ;PROTADR POINTER
00CC95: D0 03 =CC9A >494           BNE   :CONT      ;IF ALL DONE
00CC97: 4C D2 CB    >495           JMP   COMDPW     ;loop when bottom reached
00CC9A: 38          >496  :CONT    SEC              
00CC9B: 8A          >497           TXA              
00CC9C: E9 06       >498           SBC   #6          ;GOTO NEXT LOCATION
00CC9E: 8D 2A C8    >499           STA   LETTER1    
00CCA1: 4C E4 CB    >500           JMP   PWINPUT     ;LOOP
                    >501  
                    >502  * SET PROPER FLAGS & LEAVE
00CCA4: A9 00       >503  :END     LDA   #0         
00CCA6: 8D 9F C8    >504           STA   REALTIME   ;CLEAR ALL FLAGS
00CCA9: 8D A0 C8    >505           STA   PROGONLY   
00CCAC: 8D A1 C8    >506           STA   NOACCESS   
00CCAF: A2 1E       >507           LDX   #6*5       
00CCB1: BD D7 C8    >508  :SETFLG  LDA   PROTADR,X  ;GET TYPE
00CCB4: C9 D4       >509           CMP   #"T"       
00CCB6: D0 03 =CCBB >510           BNE   :CHKP      
00CCB8: 8D 9F C8    >511           STA   REALTIME   ;SET FLAG
00CCBB: C9 D0       >512  :CHKP    CMP   #"P"       
00CCBD: D0 03 =CCC2 >513           BNE   :CHKN      
00CCBF: 8D A0 C8    >514           STA   PROGONLY   ;SET FLAG
00CCC2: C9 CE       >515  :CHKN    CMP   #"N"       
00CCC4: D0 03 =CCC9 >516           BNE   :NEXTTYP   
00CCC6: 8D A1 C8    >517           STA   NOACCESS   ;SET FLAG
                    >518  :NEXTTYP                  
00CCC9: 8A          >519           TXA              
00CCCA: F0 06 =CCD2 >520           BEQ   :LEAVE     
00CCCC: 38          >521           SEC              
00CCCD: E9 06       >522           SBC   #6          ;NEXT TYPE
00CCCF: AA          >523           TAX              
00CCD0: B0 DF =CCB1 >524           BCS   :SETFLG     ;<ALWAYS>
                    >525  
00CCD2: 20 AE CF    >526  :LEAVE   JSR   TRANSFR4   ;DISPLAY PROT WINDOW
00CCD5: C7          >527           DFB   DISPROTWC  ;code
00CCD6: 20 AE CF    >528           JSR   TRANSFR4   ;SET DR WINDOW
00CCD9: 32          >529           DFB   WINDDRC     ;code
                    >530  
00CCDA: 4C 9D CF    >531           JMP   MAIN104    
                    >532  
                    >533  * UPDATE THE MS NYBBLE OF DATA BYTE
                    >534  
00CCDD: 0A          >535  MSNYBPW  ASL              
00CCDE: 0A          >536           ASL              
00CCDF: 0A          >537           ASL              
00CCE0: 0A          >538           ASL              
00CCE1: 48          >539           PHA              ;SAVE DIGIT
00CCE2: A9 0F       >540           LDA   #$0F       
00CCE4: D0 03 =CCE9 >541           BNE   STRIP      
                    >542  
                    >543  * UPDATE THE LS NYBBLE OF DATA BYTE
                    >544  
00CCE6: 48          >545  LSNYBPW  PHA              ;SAVE DIGIT
00CCE7: A9 F0       >546           LDA   #$F0       
00CCE9: 3D D7 C8    >547  STRIP    AND   PROTADR,X  ;STRIP DIGIT
00CCEC: 9D D7 C8    >548           STA   PROTADR,X  
00CCEF: 68          >549           PLA              ;GET NEW DIGIT
00CCF0: 1D D7 C8    >550           ORA   PROTADR,X  
00CCF3: 9D D7 C8    >551           STA   PROTADR,X  ;PUT IN
00CCF6: 60          >552           RTS              
                    >553  
                    >554  * CONVERT ACC TO HEX
                    >555  
00CCF7: C9 B0       >556  CHKHEX   CMP   #$B0       
00CCF9: 90 0C =CD07 >557           BLT   :NOTHEX    
00CCFB: C9 BA       >558           CMP   #$BA       
00CCFD: 90 0D =CD0C >559           BLT   :OK        
00CCFF: C9 C0       >560           CMP   #$C0       
00CD01: 90 04 =CD07 >561           BLT   :NOTHEX    
00CD03: C9 C7       >562           CMP   #$C7       
00CD05: 90 02 =CD09 >563           BLT   :OKAF      
00CD07: 38          >564  :NOTHEX  SEC              ;SET NOT HEX FLAG
00CD08: 60          >565           RTS              
                    >566  
00CD09: 18          >567  :OKAF    CLC              
00CD0A: 69 09       >568           ADC   #9          ;CONVERT TO $A - $F
00CD0C: 29 0F       >569  :OK      AND   #$0F        ;STRIP HI DIGIT
00CD0E: 18          >570           CLC              ;SET HEX FLAG
00CD0F: 60          >571           RTS              
                    >572  
00CD10: B9 33 C9    >573  GETCHAR  LDA   IN,Y       ;READ CHAR
00CD13: C8          >574           INY              
00CD14: CE E1 C9    >575           DEC   TEMP       ;IN POINTER
00CD17: 60          >576           RTS              
                    >577  
                    >578  ******************************
                    >579  * COMDMW - MEMORY WINDOW
                    >580  ******************************
                    >581  
00CD18: 20 AE CF    >582  COMDMW   JSR   TRANSFR4   ;SET MEM WINDOW
00CD1B: AF          >583           DFB   DISMEMWC   ;code
00CD1C: 20 AE CF    >584  :MWLOOP  JSR   TRANSFR4   ;HOME W/NO CLEAR
00CD1F: 9F          >585           DFB   HOMEC       ;code
                    >586  
                    >587  * SET WINDOW WIDTH TO FORCE RETURN AT END OF ADDRESS
00CD20: A9 08       >588           LDA   #8         
00CD22: 8D 56 C9    >589           STA   WINDWDTH   
00CD25: A2 21       >590           LDX   #11*3       ;0-11 BUFFFERS 3 BYTES EACH BUFFER
00CD27: 8E 2A C8    >591           STX   LETTER1     ;SAVE
                    >592  
00CD2A: A9 80       >593           LDA   #$80        ;NULL
00CD2C: 8D 32 C9    >594           STA   PROMPT     
00CD2F: 20 AE CF    >595  :MWINPUT JSR   TRANSFR4   ;GET LINE
00CD32: 57          >596           DFB   GETLNC      ;code
00CD33: B0 5D =CD92 >597           BCS   :END        ;if <esc> key pressed
00CD35: E8          >598           INX              
00CD36: 8E E1 C9    >599           STX   TEMP        ;IN POINTER
00CD39: A0 00       >600           LDY   #0         
                    >601  
00CD3B: AE 2A C8    >602           LDX   LETTER1     ;MEM ADDRESS POINTER
00CD3E: CA          >603           DEX              
                    >604  
                    >605  * LOAD IN 1 BYTE OF MEMADR ADDRESS, LOOP UNTIL DONE
00CD3F: E8          >606  :PRBYT   INX              ;NEXT BYTE
00CD40: 20 10 CD    >607           JSR   GETCHAR     ;READ IN,Y
00CD43: F0 24 =CD69 >608           BEQ   :CR         ;IF <CR>
00CD45: 20 F7 CC    >609           JSR   CHKHEX      ;CONVERT TO HEX
00CD48: B0 1B =CD65 >610           BCS   :ERROR      ;IF NOT HEX
00CD4A: 20 9D CD    >611           JSR   ASLUPMW     ;UPDATE MS NYBBLE OF DATA
00CD4D: 20 10 CD    >612           JSR   GETCHAR     ;READ IN,Y
00CD50: F0 17 =CD69 >613           BEQ   :CR        
00CD52: 20 F7 CC    >614           JSR   CHKHEX     
00CD55: B0 0E =CD65 >615           BCS   :ERROR     
00CD57: 20 A6 CD    >616           JSR   UPDTMW      ;UPDATE LS NYBBLE OF DATA
00CD5A: C0 02       >617           CPY   #2          ;SKIP "/" ?
00CD5C: D0 E1 =CD3F >618           BNE   :PRBYT      ;IF NO
00CD5E: 20 10 CD    >619  :SKIP    JSR   GETCHAR    
00CD61: F0 06 =CD69 >620           BEQ   :CR        
00CD63: D0 DA =CD3F >621           BNE   :PRBYT      ;<ALWAYS>
00CD65: 20 AE CF    >622  :ERROR   JSR   TRANSFR4   ;RING BELL
00CD68: 77          >623           DFB   BELLC       ;code
00CD69: AD 5A C9    >624  :CR      LDA   CURSVERT   ;SAVE CURRENT POSITION
00CD6C: 48          >625           PHA              
00CD6D: 20 AE CF    >626           JSR   TRANSFR4   ;UPDATE PROT WINDOW
00CD70: AF          >627           DFB   DISMEMWC   ;code
00CD71: A9 08       >628           LDA   #8         
00CD73: 8D 56 C9    >629           STA   WINDWDTH   ;RESET WINDOW WIDTH
00CD76: 68          >630           PLA              
00CD77: 8D 5A C9    >631           STA   CURSVERT   ;RESTORE POSITION
00CD7A: A9 00       >632           LDA   #0         
00CD7C: 8D 59 C9    >633           STA   CURSHORZ   ;LEFT EDGE
00CD7F: 20 AE CF    >634           JSR   TRANSFR4   ;RESTORE BAS
00CD82: 8F          >635           DFB   VTABC       ;code
00CD83: AE 2A C8    >636           LDX   LETTER1     ;MEMADR POINTER
00CD86: F0 94 =CD1C >637           BEQ   :MWLOOP    ;if at bottom of window
00CD88: 38          >638           SEC              
00CD89: 8A          >639           TXA              
00CD8A: E9 03       >640           SBC   #3          ;GOTO NEXT LOCATION
00CD8C: 8D 2A C8    >641           STA   LETTER1    
00CD8F: 4C 2F CD    >642           JMP   :MWINPUT    ;LOOP
                    >643  
00CD92: 20 AE CF    >644  :END     JSR   TRANSFR4   ;UPDATE MW DISPLAY
00CD95: AF          >645           DFB   DISMEMWC   ;code
00CD96: 20 AE CF    >646           JSR   TRANSFR4   ;SET DR WINDOW
00CD99: 32          >647           DFB   WINDDRC    ;code
                    >648  
00CD9A: 4C 9D CF    >649           JMP   MAIN104    
                    >650  
                    >651  * UPDATE HI NYBBLE OF MEMWADR
                    >652  
00CD9D: 0A          >653  ASLUPMW  ASL              
00CD9E: 0A          >654           ASL              
00CD9F: 0A          >655           ASL              
00CDA0: 0A          >656           ASL              
00CDA1: 48          >657           PHA              ;SAVE DIGIT
00CDA2: A9 0F       >658           LDA   #$0F       
00CDA4: D0 03 =CDA9 >659           BNE   STRIPMW    
                    >660  
                    >661  * UPDATE LOW NYBBLE OF MEMWADR
                    >662  
00CDA6: 48          >663  UPDTMW   PHA              ;SAVE DIGIT
00CDA7: A9 F0       >664           LDA   #$F0       
00CDA9: 3D B0 C8    >665  STRIPMW  AND   MEMWADR,X  ;STRIP DIGIT
00CDAC: 9D B0 C8    >666           STA   MEMWADR,X  
00CDAF: 68          >667           PLA              ;GET NEW DIGIT
00CDB0: 1D B0 C8    >668           ORA   MEMWADR,X  
00CDB3: 9D B0 C8    >669           STA   MEMWADR,X  ;PUT IN
00CDB6: 60          >670           RTS              
                    >671  
                    >672  ****************************************
                    >673  * CALCULATE THE BANK FOR THE CURRENT
                    >674  * MEMLOW & MEMHI LOCATION
                    >675  *
                    >676  * LOCATION MSTATE CONTAINS THE MEMORY STATE BYTE. USE THIS TO
                    >677  * DETERMINE IF CURRENT MEMLOW & MEMHI LOCATION IS IN MAIN OR
                    >678  * AUX MEMORY. MODIFY MSTATE BYTE FOR THIS TEST, MAKE BIT5=HIRES
                    >679  *****************************************
                    >680  
                    >681  BANKCHEK                  
00CDB7: AD 1D C0    >682           LDA   HIRESFLG   
00CDBA: 29 80       >683           AND   #$80       
00CDBC: 4A          >684           LSR              
00CDBD: 4A          >685           LSR              ;PUT IN BIT 5
00CDBE: 4D 19 C8    >686           EOR   MSTATE     
00CDC1: 29 20       >687           AND   #$20       
00CDC3: 4D 19 C8    >688           EOR   MSTATE      ;BIT5 = HIRES
00CDC6: 8D E1 C9    >689           STA   TEMP       
00CDC9: A2 21       >690           LDX   #$21       
00CDCB: AD 36 C8    >691           LDA   MEMHI       ;HI BYTE OF PC
00CDCE: C9 C0       >692           CMP   #$C0       
00CDD0: F0 2C =CDFE >693           BEQ   MAINRAM    
00CDD2: AD 36 C8    >694  MATCHPC  LDA   MEMHI       ;HI BYTE OF PC
00CDD5: CD 00 C8    >695           CMP   $C800      
00CDD8: DD 91 C8    >696           CMP   BANKTABL,X 
00CDDB: 8D 00 CF    >697           STA   $CF00      
00CDDE: 90 19 =CDF9 >698           BLT   NOTAUX      ;TRY NEXT LIMIT
                    >699  
00CDE0: AD E1 C9    >700           LDA   TEMP        ;GET MSTATE WITH MOD. BIT 5
00CDE3: CD 00 C8    >701           CMP   $C800      
00CDE6: 5D 92 C8    >702           EOR   BANKTABL+1,X ;XOR WITH TEST BYTE
00CDE9: 3D 93 C8    >703           AND   BANKTABL+2,X ;AND WITH TEST BYTE
00CDEC: F0 14 =CE02 >704           BEQ   ISAUX       ;IF =0 THEN AUX RAM
                    >705  
                    >706  * IF NOT AUX RAM, SHOULD WE USE THE NEXT BANKTABL FLAGS
00CDEE: BD 8E C8    >707           LDA   BANKTABL-3,X ;GET NEXT BANKTABL LOWER LIMIT
00CDF1: DD 91 C8    >708           CMP   BANKTABL,X ;SAME AS CURRENT LIMIT ?
00CDF4: 8D 00 CF    >709           STA   $CF00       ;ENAB EXT RAM
00CDF7: D0 05 =CDFE >710           BNE   MAINRAM     ;IF NO
                    >711  
00CDF9: CA          >712  NOTAUX   DEX              
00CDFA: CA          >713           DEX              
00CDFB: CA          >714           DEX              
00CDFC: 10 D4 =CDD2 >715           BPL   MATCHPC    
                    >716  MAINRAM                   
00CDFE: A9 00       >717           LDA   #0         
00CE00: F0 05 =CE07 >718           BEQ   BANKSET    
                    >719  
                    >720  * IF AUX RAM
00CE02: 8D 00 CF    >721  ISAUX    STA   $CF00       ;ENABLE EXT RAM
00CE05: A9 01       >722           LDA   #01        
00CE07: 8D 5E C9    >723  BANKSET  STA   MEMPBR      ;SET BANK
00CE0A: 60          >724           RTS              ;LEAVE
                    >725  
                    >726  *----------------------------------------
                    >727  * CALCULATE BANK # OF EFFECTIVE ADDRESS
                    >728  * EFFADRS+2, +1, +0 = EFFECTIVE PBR, HI, LOW RESPECTIVELY
                    >729  
00CE0B: 08          >730  BANKEFF  PHP              ;SAVE CARRY 
00CE0C: AD 5E C9    >731           LDA   MEMPBR     
00CE0F: 48          >732           PHA              
00CE10: AD 36 C8    >733           LDA   MEMHI       ;SAVE MEMPBR & MEMHI
00CE13: 48          >734           PHA              
00CE14: AD D5 C8    >735           LDA   EFFADRS+1  ;GET HI BYTE OF EFF ADRS
00CE17: 8D 36 C8    >736           STA   MEMHI       ;SET UP MEMHI FOR BANKCHEK
00CE1A: 20 B7 CD    >737           JSR   BANKCHEK   ;CALCULATE BANK #
00CE1D: 8D D6 C8    >738           STA   EFFADRS+2  ;SAVE BANK # OF EFFADRS
00CE20: 68          >739           PLA              
00CE21: 8D 36 C8    >740           STA   MEMHI      
00CE24: 68          >741           PLA              
00CE25: 8D 5E C9    >742           STA   MEMPBR      ;RESTORE MEMHI & MEMPBR
00CE28: 28          >743           PLP              ;RESTORE CARRY
00CE29: 60          >744           RTS              
                    >745  
                    >746  * ----------------------------------------
                    >747  ** CALCULATE THE EFFECTIVE ADDRESS OF CURRENT INSTRUCTION
                    >748  
00CE2A: 38          >749  CALCEFF  SEC              
00CE2B: AE 45 C8    >750           LDX   MODE        ;GET MODE * 2
00CE2E: CD 00 C8    >751           CMP   $C800       ;SELECT EXT ROM
00CE31: BD B6 C8    >752           LDA   EFFTABL+1,X ;GET HI BYTE OF PROPER ROUTINE
00CE34: 48          >753           PHA              
00CE35: BD B5 C8    >754           LDA   EFFTABL,X  ;GET LOW BYTE OF ROUTINE
00CE38: 48          >755           PHA              
00CE39: CD 00 CF    >756           CMP   $CF00       ;SELECT EXT RAM
00CE3C: 18          >757           CLC              
00CE3D: 60          >758  NOEFF    RTS              ;GOTO ROUTINE WITH RTS
                    >759  
                    >760  * CALCULATE EFFECTIVE ADDRESS ROUTINES
                    >761  
                    >762  * MODE 5  (d),Y
                    >763  
00CE3E: AE D4 C8    >764  EFFM5    LDX   EFFADRS     ;GET OPERAND
00CE41: AD 15 C8    >765           LDA   YREG        ;USERS Y
00CE44: 75 00       >766           ADC   0,X         ;ADD d TO Y
00CE46: 8D D4 C8    >767           STA   EFFADRS    
00CE49: B5 01       >768           LDA   1,X         ;HI BYTE d
00CE4B: 69 00       >769  EFFADC   ADC   #0          ;ADD CARRY IF ANY
00CE4D: 8D D5 C8    >770  EFFSTA   STA   EFFADRS+1  
00CE50: 4C 0B CE    >771           JMP   BANKEFF     ;CALC BANK OF EFF ADDRESS & RTS
                    >772  
                    >773  * MODE 6  [d],Y
                    >774  
00CE53: 20 3E CE    >775  EFFM6    JSR   EFFM5      
00CE56: B5 02       >776           LDA   2,X         ;PBR OF d
00CE58: 69 00       >777  EFFADC2  ADC   #0         
00CE5A: 8D D6 C8    >778           STA   EFFADRS+2  
00CE5D: 60          >779           RTS              
                    >780  
                    >781  * MODE 8  d,X
                    >782  
00CE5E: AD 13 C8    >783  EFFM8    LDA   XREG        ;USERS X
00CE61: 6D D4 C8    >784  M9CONT   ADC   EFFADRS     ;ADD X TO OPERAND
00CE64: 8D D4 C8    >785           STA   EFFADRS    
00CE67: 4C 0B CE    >786           JMP   BANKEFF     ;CALC BANK # & RTS
                    >787  
                    >788  * MODE 9  d,Y
                    >789  
00CE6A: AD 15 C8    >790  EFFM9    LDA   YREG        ;USERS Y
00CE6D: 90 F2 =CE61 >791           BCC   M9CONT      ;<always>
                    >792  
                    >793  * MODE 7 (d,X)
                    >794  
00CE6F: AD 13 C8    >795  EFFM7    LDA   XREG        ;USER'S X
00CE72: 6D D4 C8    >796           ADC   EFFADRS     ;ADD X TO OPERAND
00CE75: AA          >797           TAX              
00CE76: B5 00       >798  M7CONT   LDA   0,X         ;LOW BYTE EFFADRS
00CE78: 8D D4 C8    >799           STA   EFFADRS    
00CE7B: B5 01       >800           LDA   1,X        
00CE7D: 4C 4D CE    >801           JMP   EFFSTA     
                    >802  
                    >803  * MODE 10  (d)
                    >804  
00CE80: AE D4 C8    >805  EFFM10   LDX   EFFADRS     ;GET OPERAND
00CE83: 90 F1 =CE76 >806           BCC   M7CONT      ;<always>
                    >807  
                    >808  * MODE A  a,X
                    >809  
00CE85: AD 13 C8    >810  EFFMA    LDA   XREG        ;USERS X
00CE88: 6D D4 C8    >811  MCCONT   ADC   EFFADRS     ;LOW BYTE
00CE8B: 8D D4 C8    >812           STA   EFFADRS    
00CE8E: AD D5 C8    >813           LDA   EFFADRS+1  ;HI BYTE
00CE91: 4C 4B CE    >814           JMP   EFFADC     
                    >815  
                    >816  * MODE B  al,X
                    >817  
00CE94: AD D6 C8    >818  EFFMB    LDA   EFFADRS+2  
00CE97: 48          >819           PHA              
00CE98: 20 85 CE    >820           JSR   EFFMA      
00CE9B: 68          >821           PLA              
00CE9C: 4C 58 CE    >822           JMP   EFFADC2    
                    >823  
                    >824  * MODE C  a,Y
                    >825  
00CE9F: AD 15 C8    >826  EFFMC    LDA   YREG        ;USERS Y
00CEA2: 90 E4 =CE88 >827           BCC   MCCONT     
                    >828  
                    >829  * MODE F  (a)
                    >830  
00CEA4: A9 BD       >831  EFFMF    LDA   #$BD        ;LDA OP,X OPCODE
00CEA6: 8D 64 C9    >832           STA   SELFMOD     ;SETUP SELF MOD
00CEA9: AD D4 C8    >833           LDA   EFFADRS    
00CEAC: 8D 65 C9    >834           STA   SELFMOD+1  
00CEAF: AD D5 C8    >835           LDA   EFFADRS+1  
00CEB2: 8D 66 C9    >836           STA   SELFMOD+2  
00CEB5: A9 60       >837           LDA   #$60        ;RTS OPCODE
00CEB7: 8D 67 C9    >838           STA   SELFMOD+3  
00CEBA: A2 00       >839           LDX   #0         
00CEBC: 20 64 C9    >840           JSR   SELFMOD     ;GET LOW BYTE IND ADRS
00CEBF: 8D D4 C8    >841           STA   EFFADRS    
00CEC2: E8          >842           INX              
00CEC3: 20 64 C9    >843           JSR   SELFMOD     ;GET HI BYTE IND ADRS
00CEC6: 4C 4D CE    >844           JMP   EFFSTA     
                    >845  
                    >846  * MODE 12  (a,X)
                    >847  
00CEC9: AD 13 C8    >848  EFFM12   LDA   XREG        ;USERS X REG
00CECC: 6D D4 C8    >849           ADC   EFFADRS     ;ADD TO OPERAND
00CECF: 8D D4 C8    >850           STA   EFFADRS    
00CED2: AD D5 C8    >851           LDA   EFFADRS+1  
00CED5: 69 00       >852           ADC   #0         
00CED7: 8D D5 C8    >853           STA   EFFADRS+1  
00CEDA: 4C A4 CE    >854           JMP   EFFMF      
                    >855  
                    >856  * MODE 11  [d]
                    >857  
00CEDD: 20 80 CE    >858  EFFM11   JSR   EFFM10     
00CEE0: B5 02       >859           LDA   2,X         ;GET PBR IND ADRS
00CEE2: 8D D6 C8    >860           STA   EFFADRS+2  
00CEE5: 60          >861           RTS              
                    >862  
                    >863  * MODE 13  d,S
                    >864  
00CEE6: AD 17 C8    >865  EFFM13   LDA   STACK       ;LOW BYTE STACK
00CEE9: 6D D4 C8    >866           ADC   EFFADRS     ;ADD TO OPERAND
00CEEC: 8D D4 C8    >867           STA   EFFADRS    
00CEEF: AD 18 C8    >868           LDA   STACK+1     ;HI BYTE STACK
00CEF2: 4C 4B CE    >869           JMP   EFFADC     
                    >870  
                    >871  * MODE 14  (d,S),Y ** NOT COMPLETED YET **
                    >872  
00CEF5: 20 E6 CE    >873  EFFM14   JSR   EFFM13     
00CEF8: 60          >874           RTS              
                    >875  
                    >876  ******************************
                    >877  * PART OF COMDRT
                    >878  
00CEF9: A9 BF       >879  SETUPRT  LDA   #%10111111 
00CEFB: 8D FF C8    >880           STA   RTBRKFLG   ;SET FLAG >$7F
00CEFE: 2D 39 C8    >881           AND   IERBUFF    
00CF01: 8D 39 C8    >882           STA   IERBUFF     ;DISABLE VIAT1 INTERRUPT
00CF04: AE 17 C8    >883           LDX   STACK       ;USERS STACK
                    >884  * SEE IF A PRODOS MLI CALL WAS THE LAST JSR EXECUTED
00CF07: E8          >885           INX              ;POINT TO LOW BYTE OF RTS ADDRESS
00CF08: 38          >886           SEC              
00CF09: BD 00 01    >887           LDA   $100,X      ;GET LOW BYTE OF RETURN ADDRESS
00CF0C: E9 02       >888           SBC   #2          ;POINT TO JSR OPCODE
00CF0E: 8D 87 C8    >889           STA   LOWADD     
00CF11: E8          >890           INX              
00CF12: BD 00 01    >891           LDA   $100,X      ;GET HI BYTE OF RETURN ADDRESS
00CF15: E9 00       >892           SBC   #0         
00CF17: 8D 88 C8    >893           STA   HIADD      
00CF1A: A0 00       >894           LDY   #0         
                    >895  
                    >896  * TEST FOR JSR $BF00
00CF1C: 20 AE CF    >897           JSR   TRANSFR4   
00CF1F: 00          >898           DFB   LDAINDYC   ;code
00CF20: C9 20       >899           CMP   #$20       
00CF22: D0 10 =CF34 >900           BNE   :NOTMLI    
00CF24: C8          >901           INY              
00CF25: 20 AE CF    >902           JSR   TRANSFR4   
00CF28: 00          >903           DFB   LDAINDYC   ;code
00CF29: D0 09 =CF34 >904           BNE   :NOTMLI     ;IF NOT $00
00CF2B: C8          >905           INY              
00CF2C: 20 AE CF    >906           JSR   TRANSFR4   
00CF2F: 00          >907           DFB   LDAINDYC   ;code
00CF30: C9 BF       >908           CMP   #$BF       
00CF32: F0 02 =CF36 >909           BEQ   :MLI        ;IF MLI CALL
                    >910  
00CF34: A0 FF       >911  :NOTMLI  LDY   #$FF        ;NOT MLI SO PUT BRK AT NEXT INSTRUCTION
                    >912  
                    >913  * It is a ProDos MLI call, so place a BRK at the instruction
                    >914  * following the MLI parameters.
00CF36: C8          >915  :MLI     INY              
00CF37: C8          >916           INY              
00CF38: C8          >917           INY              
00CF39: C8          >918           INY              ;POINT TO OPCODE OF NEXT INST.
00CF3A: 20 AE CF    >919           JSR   TRANSFR4   ;GET OPCODE
00CF3D: 00          >920           DFB   LDAINDYC   ;code
00CF3E: F0 0F =CF4F >921           BEQ   :ISBRK      ;IT IS A BRK, SO DON'T ALLOW REAL TIME
00CF40: 8D 01 C9    >922           STA   RTOPCODE   ;SAVE OPCODE
00CF43: A9 00       >923           LDA   #0         
00CF45: 20 AE CF    >924           JSR   TRANSFR4   ;PUT BRK
00CF48: 08          >925           DFB   STAINDYC   ;code
00CF49: 20 AE CF    >926           JSR   TRANSFR4   ;VERIFY
00CF4C: 00          >927           DFB   LDAINDYC   ;code
00CF4D: F0 01 =CF50 >928           BEQ   :CONTINUE  ;IF OK
                    >929  * BRK DID NOT STORE
00CF4F: 60          >930  :ISBRK   RTS              ;Z=1 IF ALREADY BRK, Z=0 IF NOT RAM
                    >931  
                    >932  :CONTINUE                 
00CF50: AE 17 C8    >933           LDX   STACK      
00CF53: E8          >934           INX              
00CF54: E8          >935           INX              ;THIS IS WHERE STACK POINTER WILL BE AFTER
00CF55: 8E 00 C9    >936           STX   RTSTK       ; RTS & HITTING OUR BRK.
                    >937  
00CF58: 20 AE CF    >938           JSR   TRANSFR4   ;START REALTIME
00CF5B: 20          >939           DFB   EXECUTEC   ;code
                    >940  * NO RETURN
                    >941  
                    >942  * RESTORE AFTER REALTIME BRK
                    >943  
00CF5C: AD 01 C9    >944  RESTRT   LDA   RTOPCODE   ;GET SAVED OPCODE
00CF5F: A0 00       >945           LDY   #0         
00CF61: 20 AE CF    >946           JSR   TRANSFR4   ;RESTORE OPCODE AT CURRENT PC
00CF64: 62          >947           DFB   STAPCIYC   ;code
                    >948  
00CF65: 8C FF C8    >949           STY   RTBRKFLG   ;CLEAR FLAG
00CF68: 8C A5 C8    >950           STY   PASSFLG     ;NOT REALLY A BRK
00CF6B: 2C FE C8    >951           BIT   COMRTFLG   ;IS THIS COMDRT ?
00CF6E: 60          >952           RTS              
                    >953  
                    >954  ******* SAVE THE ACC, X AND P REGISTERS *****
                    >955  
                    >956  SAVEAXP4                  
00CF6F: 08          >957           PHP              ;SAVE STATUS
00CF70: 8E 05 C9    >958           STX   XSAVESEG   
00CF73: 8D 04 C9    >959           STA   ASAVESEG   
00CF76: 68          >960           PLA              ;GET STATUS
00CF77: 8D 06 C9    >961           STA   PSAVESEG   ;SAVE
00CF7A: 60          >962           RTS              
                    >963  
                    >964  ****** RESTORE THE ACC, X AND P REGISTERS *****
                    >965  
                    >966  RESTAXP4                  
00CF7B: AE 05 C9    >967           LDX   XSAVESEG   
00CF7E: AD 06 C9    >968           LDA   PSAVESEG   
00CF81: 48          >969           PHA              
00CF82: AD 04 C9    >970           LDA   ASAVESEG   
00CF85: 28          >971           PLP              
00CF86: 60          >972           RTS              
                    >973  
                    >974  ***** THIS SEGMENTS GLOBAL SUBROUTINES *****
                    >975  
                    >976  SUBTABL4                  
                    >977  
            =0104   >978  DISBROUTC EQU  *-SUBTABL4*4+4+$100 
00CF87: C9 CA       >979           DA    DISBROUT-1 
                    >980  
            =010C   >981  DISNOTRMC EQU  *-SUBTABL4*4+4+$100 
00CF89: D5 CA       >982           DA    DISNOTRM-1 
                    >983  
            =0114   >984  DISHARDC EQU   *-SUBTABL4*4+4+$100 
00CF8B: E1 CA       >985           DA    DISHARD-1  
                    >986  
            =011C   >987  OUTPRGRC EQU   *-SUBTABL4*4+4+$100 
00CF8D: ED CA       >988           DA    OUTPRGR-1  
                    >989  
            =0124   >990  NOACMSGC EQU   *-SUBTABL4*4+4+$100 
00CF8F: 12 CB       >991           DA    NOACMSG-1  
                    >992  
            =012C   >993  WINDFULC EQU   *-SUBTABL4*4+4+$100 
00CF91: 3B CB       >994           DA    WINDFUL-1  
                    >995  
            =0134   >996  BANKCHEKC EQU  *-SUBTABL4*4+4+$100 
00CF93: B6 CD       >997           DA    BANKCHEK-1 
                    >998  
            =013C   >999  CALCEFFC EQU   *-SUBTABL4*4+4+$100 
00CF95: 29 CE       >1000          DA    CALCEFF-1  
                    >1001 
            =0144   >1002 SETUPRTC EQU   *-SUBTABL4*4+4+$100 
00CF97: F8 CE       >1003          DA    SETUPRT-1  
                    >1004 
            =014C   >1005 RESTRTC  EQU   *-SUBTABL4*4+4+$100 
00CF99: 5B CF       >1006          DA    RESTRT-1   
                    >1007 
                    >1008 *********************************
                    >1009 **** SEGMENT CROSSOVER AREA *****
                    >1010 *********************************
                    >1011 
            =0002   >1013 S4END    =     $CF9D-*    
                    >1014          do    nolist     
                    >1015          LST   OFF        
                    >1016          fin              
                    >1017          ERR   *-1/$CF9D  
00CF9B: FF FF       >1018          DS    $CF9D-*,$FF 
                    >1019 
00CF9D: 20 6F CF    >1020 MAIN104  JSR   SAVEAXP4   ;COME HERE TO TRANSFER TO SEGMENT0 DIRECTLY
00CFA0: AE 23 C8    >1021          LDX   SLOTN0     
00CFA3: A9 05       >1022          LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >1023          STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 7B CF    >1024          JSR   RESTAXP4   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >1025          RTS              ;GOTO COMMANDS IN THIS SEGMENT
00CFAC: EA          >1026          NOP              
00CFAD: EA          >1027          NOP              ;MATCH LENGTH WITH SEG 5
                    >1028 
                    >1029 * TRANSFER TO OTHER SEGMENTS
                    >1030 
                    >1031 TRANSFR4                  
                    >1032 
00CFAE: 20 6F CF    >1033          JSR   SAVEAXP4   
00CFB1: 68          >1034          PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >1035          CLC              
00CFB3: 69 01       >1036          ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >1037          STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >1038          PLA              
00CFB9: 69 00       >1039          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1040          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1041          PHA              
00CFBF: AD DE C9    >1042          LDA   TEMPSEG    
00CFC2: 48          >1043          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 04       >1044          LDA   #4          ;CURRENT SEG #
00CFC5: 48          >1045          PHA              
00CFC6: 20 DD C9    >1046          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1047          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1048          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1049          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1050          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1051 * NEW SEGMENT
00CFD4: A9 CF       >1052          LDA   #>RETURN4  ;WHERE TO RETURN TO
00CFD6: 48          >1053          PHA              
00CFD7: A9 ED       >1054          LDA   #RETURN4   
00CFD9: 48          >1055          PHA              
00CFDA: AD 44 C8    >1056          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1057          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1058          LSR              
00CFE0: 4A          >1059          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1060 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1061          TAX              
00CFE2: BD 88 CF    >1062          LDA   SUBTABL4+1,X 
00CFE5: 48          >1063          PHA              
00CFE6: BD 87 CF    >1064          LDA   SUBTABL4,X 
00CFE9: 48          >1065          PHA              
                    >1066 
00CFEA: 20 7B CF    >1067          JSR   RESTAXP4   ;RESTORE REGISTERS
00CFED: 60          >1068          RTS              ;USE RTS TO GOTO SUB
                    >1069 
                    >1070 * RETURN HERE FROM SUBROUTINE
                    >1071 
            =CFED   >1072 RETURN4  EQU   *-1        
00CFEE: 20 6F CF    >1073          JSR   SAVEAXP4   
00CFF1: 68          >1074          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1075          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1076          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 7B CF    >1077          JSR   RESTAXP4   
00CFFB: 60          >1078          RTS              ;RETURN TO PROGRAM
                    >1079 
00CFFC: FF FF FF FF >1080          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     26            PUT   SEG5       
                    >2    ********************
                    >3    * SFIVEFONE
                    >4    ********************
                    >5    
                    >6             ORG   $C800      
                    >7    
                    >8    COMMANDS                  
                    >9    * SEGMENT 0
00C800: D2 D4 D4 D2 >10            ASC   "RTTREXERTSDR" 
                    >11   
                    >12   * SEGMENT 1
00C80C: D0 BD D0 C3 >13            ASC   "P=PCA=X=Y=S=GOSBHBRBRHRAMMMDM ? JS" 
                    >14   
                    >15   * SEGMENT 2
00C82E: CF CE CF C6 >16            ASC   "ONOFMOQU* **" 
                    >17   
                    >18   * SEGMENT 3
00C83A: CD C1       >19            ASC   "MA"       
                    >20   
                    >21   * SEGMENT 4
00C83C: BE A0 CB C5 >22            ASC   "> KESSSDMWPW" 
                    >23   
                    >24   * SEGMENT 5
00C848: CC A0 CC C9 >25            ASC   "L LIET"   
                    >26   
                    >27   * COMMAND ADDRESS TABLE
                    >28   
                    >29   * THE FOLLOWING COMMANDS ARE IN SEGMENT 0
                    >30   
                    >31   COMDJUMP                  
00C84E: 90 CB       >32            DA    COMDRT-1   
00C850: AB CB       >33            DA    COMDTR-1   
00C852: A8 CB       >34            DA    COMDEX-1   
00C854: CE CB       >35            DA    COMDER-1   
00C856: 03 CE       >36            DA    COMDTS-1   
00C858: 95 CD       >37            DA    COMDDR-1   
                    >38   
                    >39   * THE FOLLOWING COMMANDS ARE IN SEGMENT 1
                    >40   
                    >41   CMNDSEG1                  
00C85A: FF C9       >42            DA    COMDDOTP-1 
00C85C: 7B CA       >43            DA    COMDPC-1   
00C85E: AF CA       >44            DA    COMDPA-1   
00C860: BA CA       >45            DA    COMDPX-1   
00C862: C5 CA       >46            DA    COMDPY-1   
00C864: D0 CA       >47            DA    COMDPS-1   
00C866: DF CA       >48            DA    COMDGO-1   
00C868: F4 CA       >49            DA    COMDSB-1   
00C86A: 4C CB       >50            DA    COMDHB-1   
00C86C: 75 CB       >51            DA    COMDRB-1   
00C86E: 8F CB       >52            DA    COMDRH-1   
00C870: 95 CB       >53            DA    COMDRA-1   
00C872: 9B CB       >54            DA    COMDMM-1   
00C874: F6 CB       >55            DA    COMDMD-1   
00C876: 2A CC       >56            DA    CMDMENU-1  
00C878: 2A CC       >57            DA    CMDMENU-1  
00C87A: 4F CC       >58            DA    COMDJS-1   
                    >59   
                    >60   * THE FOLLOWING COMMANDS ARE IN SEGMENT 2
                    >61   
                    >62   CMNDSEG2                  
00C87C: 51 CB       >63            DA    COMDON-1   
00C87E: 85 CB       >64            DA    COMDOFF-1  
00C880: 96 CB       >65            DA    COMDMO-1   
00C882: A0 CC       >66            DA    COMDQU-1   
00C884: A3 CC       >67            DA    COMDAST-1  
00C886: A3 CC       >68            DA    COMDAST-1  
                    >69   
                    >70   * THE FOLLOWING COMMANDS ARE IN SEGMENT 3
                    >71   
                    >72   CMNDSEG3                  
00C888: 13 CA       >73            DA    COMDMA-1   
                    >74   
                    >75   * THE FOLLOWING COMMANDS ARE IN SEGMENT 4
                    >76   
                    >77   CMNDSEG4                  
00C88A: FF C9       >78            DA    COMDSKIP-1 
00C88C: 28 CA       >79            DA    COMDKEY-1  
00C88E: 46 CA       >80            DA    COMDSS-1   
00C890: 59 CB       >81            DA    COMDSD-1   
00C892: 17 CD       >82            DA    COMDMW-1   
00C894: D1 CB       >83            DA    COMDPW-1   
                    >84   
                    >85   * THE FOLLOWING COMMANDS ARE IN SEGMENT 5
                    >86   
                    >87   CMNDSEG5                  
00C896: 26 CB       >88            DA    COMDLI-1   
00C898: 26 CB       >89            DA    COMDLI-1   
00C89A: 5D CB       >90            DA    COMDET-1   
                    >91   
                    >92   MSGVERS                   
00C89C: 8D 8D 8D 8D >93            DFB   CR,CR,CR,CR 
00C8A0: A0 A0 A0 A0 >94            ASC   "          (R)" 
00C8AD: 8D          >95            DFB   CR         
00C8AE: A0 AD AD AD >96            ASC   " --- ProDev  DDT8 Version 1.6.1 ---" 
00C8D1: 8D 8D       >97            DFB   CR,CR      
00C8D3: A0 A0 A0 A0 >98            ASC   "    28-May-2005      4:42 pm" 
00C8EF: 8D 8D       >99            DFB   CR,CR      
00C8F1: A0 A0 A0 A0 >100           ASC   "         BY: Chuck Kelly" 
00C909: 8D 8D 8D 8D >101           DFB   CR,CR,CR,CR,CR,CR,CR,CR,CR 
                    >102  * ASC "      Christ is the answer!" 
                    >103  * Amazing how many people were afraid of this statement.
                    >104  * Unfortunately for them their fears do not change reality.
00C912: 8D 8D 8D 8D >105           DFB   CR,CR,CR,CR,CR,CR 
00C918: 84          >106           DFB   EOT        
                    >107  
                    >108  
                    >109  * Copyright message for displaying in break window
                    >110  
                    >111  MSGCOPYR                  
00C919: 8D 8D 8D    >112           DFB   CR,CR,CR   
00C91C: D4 E8 E9 F3 >113           ASC   "This program" 
00C928: 8D          >114           DFB   CR         
00C929: F2 E5 EC E5 >115           ASC   "released to" 
00C934: 8D          >116           DFB   CR         
00C935: D0 F5 E2 EC >117           ASC   "Public Domain" 
00C942: 8D          >118           DFB   CR         
00C943: A0 A0 A0 A0 >119           ASC   "      by:" 
00C94C: 8D          >120           DFB   CR         
00C94D: A0 A0 D0 F2 >121           ASC   "  ProDev, Inc" 
00C95A: 8D 8D       >122           DFB   CR,CR      
00C95C: A0 A0 CE EF >123           ASC   "  No rights" 
00C967: 8D          >124           DFB   CR         
00C968: A0 A0 A0 F2 >125           ASC   "   reserved" 
00C973: 8D 8D 84    >126           DFB   CR,CR,EOT  
                    >127  
                    >128  
                    >129  * MESSAGE FOR EXECUTION TIME
                    >130  
            =C976   >131  MSGET    EQU   *          
00C976: C3 CC CF C3 >132           ASC   "CLOCK CYCLES = $" 
00C986: 84          >133           DFB   EOT        
                    >134  
                    >135  *--------------------
                    >136  * MSGCRES
                    >137  
                    >138  MSGCRES                   
00C987: 8D          >139           DFB   CR         
00C988: A8 F2 E5 F4 >140           ASC   "(return,esc) ?" 
00C996: 84          >141           DFB   EOT        
                    >142  
                    >143  ****************************************
                    >144  * THIS POINT MUST BE $CA00 OR ABOVE.
                    >145  ****************************************
                    >146  
00C997: FF FF FF FF >147           DS    $CA00-*,$FF 
                    >148  
                    >149  ******************************
                    >150  * PUT ADDRESS OF COMMAND ON STACK
                    >151  * RETURNS WITH CARRY CLEAR IF COMMAND IS IN SEG 0
                    >152  ******************************
                    >153  
                    >154  GETCOMD                   
00CA00: AD 9E C8    >155           LDA   TFLAG      ;is Trace mode active?
00CA03: D0 09 =CA0E >156           BNE   GETCOM     ;If yes, skip <CR>
00CA05: 20 AE CF    >157           JSR   TRANSFR5   ;DO <CR>
00CA08: 0F          >158           DFB   CROUTC      ;code
                    >159  
00CA09: A9 BA       >160           LDA   #":"        ;LOAD ACC WITH ASCII ":"
00CA0B: 8D 32 C9    >161           STA   PROMPT      ;STORE PROMPT
                    >162  
00CA0E: 20 AE CF    >163  GETCOM   JSR   TRANSFR5   ;GET INPUT LINE NO <CR>
00CA11: 57          >164           DFB   GETLNC      ;CODE BYTE
00CA12: B0 EC =CA00 >165           BCS   GETCOMD    ;if <esc> key pressed
                    >166  
                    >167  * ASSUMES X=0 IF ONLY A RETURN IS ENTERED
00CA14: E8          >168           INX              ;INC. CHAR. COUNT
00CA15: A0 00       >169           LDY   #00         ;CLEAR Y
00CA17: 20 AE CF    >170           JSR   TRANSFR5   ;GET CHAR
00CA1A: 01          >171           DFB   GETCHRC     ;CODE BYTE
00CA1B: D0 09 =CA26 >172           BNE   :GETC       ;GET THE COMMAND
                    >173  
                    >174  *ONLY A CR WAS ENTERED SO CHECK TRACE FLAG
00CA1D: AD 9E C8    >175           LDA   TFLAG      
00CA20: F0 EC =CA0E >176           BEQ   GETCOM     ;IF TFLAG NOT SET
00CA22: 20 AE CF    >177           JSR   TRANSFR5   ;do TRACE1 (does not return)
00CA25: 10          >178           DFB   TRACE1C    ;code
                    >179  
00CA26: 8D 2A C8    >180  :GETC    STA   LETTER1    
00CA29: B9 33 C9    >181           LDA   IN,Y        ;GET NEXT LETTER OF COMMAND
00CA2C: C8          >182           INY              
00CA2D: CA          >183           DEX              ;SETS ZFLAG WHEN BUFFER EMPTY
00CA2E: D0 04 =CA34 >184           BNE   :LTR2      
00CA30: A9 A0       >185           LDA   #$A0        ;ONLY ONE LETTER WAS ENTERED SO
                    >186  
                    >187  * FILL WITH SPACE IN CASE IT WAS A SINGLE LETTER COMMAND
00CA32: E8          >188           INX              
00CA33: 88          >189           DEY              ;POINT AT CR SO GETCHR0 WORKS IN LIST ROUTINE
00CA34: 8D 2B C8    >190  :LTR2    STA   LETTER2    
00CA37: 8E 41 C8    >191           STX   XBUFF      
00CA3A: A2 4C       >192           LDX   #COMDJUMP-COMMANDS-2 ;# OF COMMAND LETTERS - 1
00CA3C: AD 2A C8    >193  :CHECK   LDA   LETTER1    
00CA3F: CD 00 C8    >194           CMP   $C800       ;DISABLE EXT RAM
00CA42: DD 00 C8    >195           CMP   COMMANDS,X 
00CA45: 8D 00 CF    >196           STA   $CF00       ;ENABLE EXT RAM
00CA48: D0 10 =CA5A >197           BNE   :NEXT       ;NO MATCH
                    >198  
00CA4A: E8          >199           INX              ;LOOK AT SECOND LETTER OF COMMAND
00CA4B: AD 2B C8    >200           LDA   LETTER2    
00CA4E: CD 00 C8    >201           CMP   $C800       ;DISABLE EXT RAM
00CA51: DD 00 C8    >202           CMP   COMMANDS,X ;DO THEY MATCH
00CA54: F0 13 =CA69 >203           BEQ   :FOUND      ;IF YES
00CA56: CD 00 CF    >204           CMP   $CF00       ;ENABLE EXT RAM
00CA59: CA          >205           DEX              
                    >206  
00CA5A: CA          >207  :NEXT    DEX              ;TRY NEXT COMMAND
00CA5B: CA          >208           DEX              
00CA5C: 10 DE =CA3C >209           BPL   :CHECK     
                    >210  
00CA5E: 8D 00 CF    >211           STA   $CF00       ;ENABLE EXT RAM
00CA61: A9 01       >212           LDA   #INVCOM     ;INVALID COMMAND ERROR NUMBER
00CA63: 20 56 CC    >213           JSR   ERRBEEP    
00CA66: 4C 00 CA    >214           JMP   GETCOMD    
                    >215  
00CA69: BD 4E C8    >216  :FOUND   LDA   COMDJUMP,X ;push command address for RTS
00CA6C: 48          >217           PHA              
00CA6D: BD 4D C8    >218           LDA   COMDJUMP-1,X 
00CA70: 48          >219           PHA              
00CA71: CD 00 CF    >220           CMP   $CF00       ;ENABLE EXT RAM
                    >221  
00CA74: A9 00       >222           LDA   #0         
00CA76: 8D 9E C8    >223           STA   TFLAG       ;CLEAR TFLAG
00CA79: E0 0C       >224           CPX   #CMNDSEG1-COMDJUMP ;IS COMMAND IN SEG 0 ?
00CA7B: 90 20 =CA9D >225           BLT   :TOSEG0     ;yes
00CA7D: E0 2E       >226           CPX   #CMNDSEG2-COMDJUMP ;IS COMMAND IN SEG 1?
00CA7F: 90 18 =CA99 >227           BLT   :TOSEG1     ;YES
00CA81: E0 3A       >228           CPX   #CMNDSEG3-COMDJUMP ;IS COMMAND IN SEG 2?
00CA83: 90 10 =CA95 >229           BLT   :TOSEG2     ;IF YES
00CA85: E0 3C       >230           CPX   #CMNDSEG4-COMDJUMP ;IS COMMAND IN SEG 3
00CA87: 90 08 =CA91 >231           BLT   :TOSEG3     ;IF YES
00CA89: E0 48       >232           CPX   #CMNDSEG5-COMDJUMP ;IS COMMAND IN SEG 4 ?
00CA8B: B0 16 =CAA3 >233           BGE   :SEG5       ;IF no, must be seg 5
00CA8D: A9 04       >234           LDA   #04        ;seg 4
00CA8F: D0 0E =CA9F >235           BNE   :JUMPSG    
00CA91: A9 03       >236  :TOSEG3  LDA   #3         
00CA93: D0 0A =CA9F >237           BNE   :JUMPSG    
00CA95: A9 02       >238  :TOSEG2  LDA   #2         
00CA97: D0 06 =CA9F >239           BNE   :JUMPSG    
00CA99: A9 01       >240  :TOSEG1  LDA   #01         ;SET ACC FOR SEGMENT 1
00CA9B: D0 02 =CA9F >241           BNE   :JUMPSG    
00CA9D: A9 00       >242  :TOSEG0  LDA   #0         
00CA9F: 8D E1 C9    >243  :JUMPSG  STA   TEMP        ;SEG # OF COMMAND
00CAA2: 18          >244           CLC              ;NOT SEG 5
00CAA3: 08          >245  :SEG5    PHP              ;SAVE CARRY
00CAA4: AE 41 C8    >246           LDX   XBUFF       ;RESTORE
00CAA7: 20 AE CF    >247           JSR   TRANSFR5   ;GET NEXT CHARACTER
00CAAA: 01          >248           DFB   GETCHRC     ;code
                    >249  * STA LETTER1  ;SAVE
00CAAB: 28          >250           PLP              ;GET CARRY
                    >251  
00CAAC: E8          >252           INX              
00CAAD: CA          >253           DEX              ;SET Z BIT BY X
00CAAE: B0 06 =CAB6 >254           BCS   :STAY5     ;COMMAND IN SEG 5
00CAB0: 20 2A CD    >255           JSR   SAVEAXP5   ;SAVE REGISTERS
00CAB3: 4C 9D CF    >256           JMP   JUMPSEG5   ;GO TO THE COMMAND IN SEG 0,1,2,3 or 4
                    >257  
00CAB6: 60          >258  :STAY5   RTS              ;USE RTS TO PULL ADDRESS AND GO TO COMMAND
                    >259  
                    >260  *------------------------------
                    >261  * DISPLAY VERSION NUMBER
                    >262  
                    >263  DISVERS                   
                    >264  
00CAB7: 20 0A CB    >265           JSR   WRINIT5    
00CABA: B9 9C C8    >266  :MORE    LDA   MSGVERS,Y  ;GET CHAR
00CABD: 20 14 CB    >267           JSR   WRITECK5   ;DISPLAY
00CAC0: 90 F8 =CABA >268           BCC   :MORE       ;<ALWAYS>
                    >269  
                    >270  * SET CARRY FLAG IF RETURNING TO USER AFTER INIT.
                    >271  
00CAC2: 2C 22 C8    >272  :DONE    BIT   STRT2FLG   ;DID WE ENTER AT START2 ?
00CAC5: 30 2D =CAF4 >273           BMI   :ENTER      ;IF NO, ENTER EXT II
                    >274  
00CAC7: 20 AE CF    >275           JSR   TRANSFR5   ;RESTORE TEXT
00CACA: 16          >276           DFB   RESTTEXTC  ;code
                    >277  
00CACB: A9 FF       >278           LDA   #$FF       
00CACD: 8D 22 C8    >279           STA   STRT2FLG   ;RESET FLAG
00CAD0: 8D 0D C8    >280           STA   VIAIFR      ;DISABLE OLD INTERRUPT FLAGS
00CAD3: A9 82       >281           LDA   #%10000010 ;ENABLE BUTTON ONLY
00CAD5: 8D 0E C8    >282           STA   VIAIER     
                    >283  
                    >284  * Check for condition #2 return.
00CAD8: AD 11 C8    >285           LDA   ACC         ;get contents of accumulator at entry
00CADB: C9 02       >286           CMP   #2          ;was condition #2 selected ?
00CADD: D0 09 =CAE8 >287           BNE   :CK3        ;if no
                    >288  * Set return condition #2, button & BRKs not enabled, writing to card is
                    >289  * allowed, accessing vectors is OK.
00CADF: A9 02       >290           LDA   #%00000010 ;Disable button
00CAE1: 8D 0E C8    >291           STA   VIAIER     
00CAE4: A9 FE       >292           LDA   #%11111110 ;CB2 HI, CB1 POS EDGE, CA2 HI, CA1 NEG EDGE
00CAE6: D0 0A =CAF2 >293           BNE   :RTSET      ;<ALWAYS>
                    >294  
                    >295  * Check for condition #3 return.
00CAE8: C9 03       >296  :CK3     CMP   #3          ;was condition #3 selected ?
00CAEA: D0 04 =CAF0 >297           BNE   :DEFALT     ;if no
                    >298  * Set return condition #3, button is only way back into card.
                    >299  * accessing vectors is OK, card is write protected.
00CAEC: A9 DC       >300           LDA   #%11011100 ;CB2 LOW, CB1 POS EDGE, CA2 LOW, CA1 NEG EDGE
00CAEE: D0 02 =CAF2 >301           BNE   :RTSET      ;<ALWAYS>
                    >302  
                    >303  * Set default return condition, button, BRKs, writing to card all enabled
                    >304  * accessing vectors $FFE8-$FFFF turns on /INH flip-flop.
00CAF0: A9 DE       >305  :DEFALT  LDA   #%11011110 ;CB2 LOW, CB1 POS EDGE, CA2 HI, CA1 NEG EDGE
                    >306  
00CAF2: 38          >307  :RTSET   SEC              
00CAF3: 60          >308           RTS              
                    >309  
00CAF4: 18          >310  :ENTER   CLC              
00CAF5: 60          >311           RTS              
                    >312  
                    >313  *---------------------------------
                    >314  *  Display the copyright notice in the breakpoint window
                    >315  
00CAF6: 20 AE CF    >316  COPYR    JSR   TRANSFR5   ;display the break window to set the window
00CAF9: BF          >317           DFB   DISBRKWC   ;code
                    >318  
00CAFA: 20 0A CB    >319           JSR   WRINIT5    
00CAFD: B9 19 C9    >320  :MORE    LDA   MSGCOPYR,Y ;GET CHAR
00CB00: 20 14 CB    >321           JSR   WRITECK5   ;DISPLAY
00CB03: 90 F8 =CAFD >322           BCC   :MORE       ;<ALWAYS>
                    >323  
00CB05: 20 AE CF    >324           JSR   TRANSFR4   ;set DR window
00CB08: 32          >325           DFB   WINDDRC     ;code
00CB09: 60          >326           RTS              
                    >327  
                    >328  *----------------------------------
                    >329  * Write text to the display device
                    >330  
00CB0A: 8C 3F C8    >331  WRINIT5  STY   YBUFF       ;SAVE
00CB0D: A0 00       >332           LDY   #0         
                    >333  WRITMOR5                  
00CB0F: 2C 00 C8    >334           BIT   $C800       ;DISABLE EXT RAM
00CB12: 18          >335           CLC              
00CB13: 60          >336           RTS              
                    >337  * This point must be before $CF00
                    >338           ERR   */$CF00    
                    >339  WRITECK5                  
00CB14: 2C 00 CF    >340           BIT   $CF00       ;ENABLE EXT RAM
00CB17: C8          >341           INY              ;NEXT CHARACTER
00CB18: C9 84       >342           CMP   #EOT        ;FINISHED?
00CB1A: F0 07 =CB23 >343           BEQ   WRITDON5   ;IF YES, CARRY ALSO SET
00CB1C: 20 AE CF    >344           JSR   TRANSFR5   ;DISPLAY CHARACTER
00CB1F: 07          >345           DFB   COUTC       ;CODE
00CB20: 4C 0F CB    >346           JMP   WRITMOR5   
                    >347  WRITDON5                  
00CB23: AC 3F C8    >348           LDY   YBUFF       ;RESTORE
00CB26: 60          >349           RTS              
                    >350  
                    >351  ********************************
                    >352  *  COMDL - LIST
                    >353  ********************************
                    >354  
            =CB27   >355  COMDLI   EQU   *          
00CB27: F0 0A =CB33 >356           BEQ   :CONT       ;IF NO ADDRESS FOLLOWS
00CB29: 20 AE CF    >357           JSR   TRANSFR5   ;GET ADDRESS
00CB2C: 1B          >358           DFB   LOADMEMC   ;CODE
00CB2D: 90 04 =CB33 >359           BCC   :CONT       ;GOOD ADDRESS SO CONTINUE
00CB2F: A9 04       >360           LDA   #BADPAR     ;ERROR NUMBER
00CB31: D0 34 =CB67 >361           BNE   TOERR5      ;<ALWAYS>
                    >362  :CONT                     
                    >363  
                    >364  ***** DISASSEMBLE AND LIST 20 LINES OF THE PROGRAM
                    >365  
00CB33: A9 14       >366  LIST     LDA   #20         ;20 LINES
00CB35: 48          >367  :NEXT    PHA              ;SAVE
                    >368  
                    >369  * ON RETURN NUMDISP =# OF BYTES IN INSTRUCTION - 1
                    >370  
00CB36: 20 AE CF    >371           JSR   TRANSFR5   ;LIST 1 LINE
00CB39: 23          >372           DFB   DISASMC     ;code
00CB3A: 38          >373           SEC              
00CB3B: AD 5F C9    >374           LDA   NUMDISP    
00CB3E: 6D 35 C8    >375           ADC   MEMLOW     
00CB41: 8D 35 C8    >376           STA   MEMLOW     
00CB44: AD 36 C8    >377           LDA   MEMHI       ;INC MEMORY POINTER
00CB47: 69 00       >378           ADC   #0         
00CB49: 8D 36 C8    >379           STA   MEMHI      
00CB4C: 68          >380           PLA              
00CB4D: 38          >381           SEC              
00CB4E: E9 01       >382           SBC   #1          ;DECREMENT COUNTER
00CB50: F0 09 =CB5B >383           BEQ   :END        ;IF FINISHED
00CB52: AE 38 C8    >384           LDX   MLIFLAG     ;WAS THE LAST INST. AN MLI CALL
00CB55: D0 DE =CB35 >385           BNE   :NEXT       ;IF NO
00CB57: E9 01       >386           SBC   #1          ;COMPENSATE FOR XTRA LINE OF MLI
00CB59: D0 DA =CB35 >387           BNE   :NEXT      
                    >388  
00CB5B: 4C 00 CA    >389  :END     JMP   GETCOMD    
                    >390  
                    >391  ********************************
                    >392  *  COMDET
                    >393  ********************************
                    >394  
            =CB5E   >395  COMDET   EQU   *          
00CB5E: F0 05 =CB65 >396           BEQ   BPERR5      ;NO ADDRESS FOLLOWS
                    >397  
                    >398  * EXECUTE THE CODE FROM ADDRESS TO ADDRESS AND DISPLAY THE
                    >399  * NUMBER OF CLOCK CYCLES REQUIRED.
                    >400  
00CB60: 20 71 CB    >401           JSR   CALCTIME   
00CB63: 90 08 =CB6D >402           BCC   TSEXEC      ;IF THE COMMAND WAS OK
00CB65: A9 04       >403  BPERR5   LDA   #BADPAR     ;BAD COMMAND PARAMETERS ERROR NUMBER
00CB67: 20 56 CC    >404  TOERR5   JSR   ERRBEEP     ;ERROR
00CB6A: 4C 00 CA    >405           JMP   GETCOMD    
00CB6D: 20 AE CF    >406  TSEXEC   JSR   TRANSFR5   ;EXECUTE USERS PROGRAM
00CB70: 20          >407           DFB   EXECUTEC   ;code
                    >408  
                    >409  ************** CALCTIME ************
                    >410  
                    >411  CALCTIME                  
00CB71: 48          >412           PHA              ;SAVE CHARACTER
00CB72: AD 39 C8    >413           LDA   IERBUFF    
00CB75: 8D 0E C9    >414           STA   ETIERSAV   ;SAVE VIAIER
00CB78: AD 01 C8    >415           LDA   VIAORA     
00CB7B: 8D 0F C9    >416           STA   ETORASAV   ;SAVE ORA & ORB
00CB7E: AD 10 C8    >417           LDA   VIAORB     
00CB81: 8D 10 C9    >418           STA   ETORBSAV   
00CB84: AD 1B C8    >419           LDA   PCLO       
00CB87: 8D 11 C9    >420           STA   ETPCLO      ;SAVE PC
00CB8A: AD 1C C8    >421           LDA   PCHI       
00CB8D: 8D 12 C9    >422           STA   ETPCHI     
00CB90: 68          >423           PLA              ;GET CHARACTER
00CB91: 20 AE CF    >424           JSR   TRANSFR5   ;READ IN 2 ADDRESSES
00CB94: 09          >425           DFB   CHKREADC   ;code
00CB95: B0 3B =CBD2 >426           BCS   ETERR       ;IF ERROR
00CB97: 2C 2D C9    >427           BIT   ADDRS2F     ;2 ADDRESSES ENTERED ?
00CB9A: 10 36 =CBD2 >428           BPL   ETERR       ;IF NO
00CB9C: 8D 1B C8    >429           STA   PCLO        ;LOW BYTE OF 1ST ADDRESS
00CB9F: AD 2B C8    >430           LDA   LETTER2     ;HI BYTE OF 1ST ADDRESS
00CBA2: 8D 1C C8    >431           STA   PCHI        ;REPLACE PC
00CBA5: AD 2D C8    >432           LDA   LETTER4     ;LOW BYTE OF 2ND ADDRESS
00CBA8: 8D 01 C8    >433           STA   VIAORA     
00CBAB: AD 2E C8    >434           LDA   LETTER5     ;HI BYTE OF 2ND ADDRESS
00CBAE: 8D 10 C8    >435           STA   VIAORB      ;REPLACE HARD BREAK
00CBB1: A9 90       >436           LDA   #%10010000 
00CBB3: 8D 39 C8    >437           STA   IERBUFF     ;ENABLE HARD BREAK
00CBB6: 8D AC C8    >438           STA   ETFLAG      ;SET FLAG FOR NMIVEC ROUTINE
                    >439  
00CBB9: AD 0B C8    >440           LDA   VIAACR     
00CBBC: 29 DF       >441           AND   #%11011111 ;SET T2 FOR TIMED INTERRUPT MODE
00CBBE: 8D 0B C8    >442           STA   VIAACR     
                    >443  
                    >444  *********** COUNTER PRESET ************
                    >445  
00CBC1: A9 A7       >446           LDA   #$A7        ;BIGGER NUMBER MAKES ET SMALLER
                    >447  
00CBC3: 8D 08 C8    >448           STA   VIAT2CL     ;COUNTER PRESET
00CBC6: A9 FD       >449           LDA   #ETVECTOR  
00CBC8: 8D 3A C8    >450           STA   ENABLTVC   
00CBCB: A9 CD       >451           LDA   #>ETVECTOR ;SET UP NMI VECTOR
00CBCD: 8D 3B C8    >452           STA   ENABLTVC+1 
00CBD0: 18          >453           CLC              
00CBD1: 60          >454  ETRTS    RTS              
                    >455  
00CBD2: 20 FE CB    >456  ETERR    JSR   ETRESTOR   ;RESTORE PC & VIA
00CBD5: 38          >457           SEC              
00CBD6: 60          >458           RTS              ;USE CARRY BIT AS AN ERROR FLAG
                    >459  
                    >460  * CONTINUATION OF ETVECTOR
                    >461  
00CBD7: AD 09 C8    >462  ETVCONT  LDA   VIAT2CH     ;GET COUNTER VALUE
00CBDA: 49 FF       >463           EOR   #$FF        ;ONES COMPLIMENT
00CBDC: 48          >464           PHA              
00CBDD: AD 08 C8    >465           LDA   VIAT2CL    
00CBE0: 49 FF       >466           EOR   #$FF        ;ONES COMPLIMENT
00CBE2: 48          >467           PHA              ;SAVE
                    >468  
                    >469  * DISPLAY "CLOCK CYCLES = $" 
                    >470  
00CBE3: 20 0A CB    >471           JSR   WRINIT5    
00CBE6: B9 76 C9    >472  :MORE    LDA   MSGET,Y     ;GET CHARACTER
00CBE9: 20 14 CB    >473           JSR   WRITECK5   ;DISPLAY CHARACTER
00CBEC: 90 F8 =CBE6 >474           BCC   :MORE       ;NOT FINISHED
                    >475  
00CBEE: 68          >476           PLA              
00CBEF: AA          >477           TAX              
00CBF0: 68          >478           PLA              
00CBF1: 20 AE CF    >479           JSR   TRANSFR5   ;DISPLAY 4 DIGIT HEX COUNTER VALUE
00CBF4: 3F          >480           DFB   PRNTAXC     ;CODE
00CBF5: 20 FE CB    >481           JSR   ETRESTOR   ;RESTORE PC & VIA
00CBF8: A9 00       >482           LDA   #0         
00CBFA: 8D AC C8    >483           STA   ETFLAG      ;CLEAR FLAG
00CBFD: 60          >484           RTS              ;RETURN TO SEG 0 & MAIN10
                    >485  
                    >486  * SUBROUTINES FOR CALCTIME
                    >487  
                    >488  *RESTORE PC & VIA
                    >489  
                    >490  ETRESTOR                  
00CBFE: AD 11 C9    >491           LDA   ETPCLO     
00CC01: 8D 1B C8    >492           STA   PCLO       
00CC04: AD 12 C9    >493           LDA   ETPCHI     
00CC07: 8D 1C C8    >494           STA   PCHI       
00CC0A: AD 10 C9    >495           LDA   ETORBSAV   
00CC0D: 8D 10 C8    >496           STA   VIAORB     
00CC10: AD 0F C9    >497           LDA   ETORASAV   
00CC13: 8D 01 C8    >498           STA   VIAORA     
00CC16: AD 0E C9    >499           LDA   ETIERSAV   
00CC19: 8D 39 C8    >500           STA   IERBUFF     ;RESTORE IERBUFF
00CC1C: 60          >501           RTS              
                    >502  
                    >503  ******************************
                    >504  * PART OF COMDTS
                    >505  
00CC1D: F0 16 =CC35 >506  TSCONT   BEQ   :TSERR      ;IF NO
00CC1F: 20 AE CF    >507           JSR   TRANSFR5   ;CHECK FOR HEX AND READ
00CC22: 09          >508           DFB   CHKREADC   ;CODE
00CC23: B0 10 =CC35 >509           BCS   :TSERR      ;IF NOT HEX
00CC25: 8D 42 C8    >510           STA   SUBTRACE   ;TO HI BYTE FOR (JUMP) VECTOR
00CC28: AD 2B C8    >511           LDA   LETTER2     ;HI BYTE Z
00CC2B: 8D 43 C8    >512           STA   SUBTRACE+1 ;TO LOW BYTE
00CC2E: A9 80       >513           LDA   #$80       
00CC30: 8D AB C8    >514           STA   TSFLAG      ;SET FLAG
00CC33: 18          >515           CLC              ;CLEAR ERROR FLAG
00CC34: 60          >516           RTS              ;RETURN TO SEG0 & GOTO TRACEN
                    >517  
00CC35: 38          >518  :TSERR   SEC              ;SET ERROR FLAG
00CC36: 60          >519           RTS              
                    >520  
                    >521  *----------------------------------------
                    >522  * Goto Pascal 1.1 routines in slot 1 or 2.
                    >523  * Returns from slot space directly to calling routine.
                    >524  * A, X, Y all trashed.
                    >525  * Note !!! The following routine must always be called via TRANSFRx so that
                    >526  * upon returning from the I/O routines the proper segment will be selected.
                    >527  
00CC37: 8D 04 C9    >528  PASCALIO STA   ASAVESEG   ;save Acc
00CC3A: AD 30 C9    >529           LDA   SLOTCN     
00CC3D: 48          >530           PHA              
00CC3E: A9 5A       >531           LDA   #EXTENAB-1 
00CC40: 48          >532           PHA              ;return address for Pascal routines use
00CC41: A9 C2       >533           LDA   #$C2       ;default to slot 2
00CC43: 2C 20 C8    >534           BIT   IOMODE     ;bit 6=1 if slot1
00CC46: 50 02 =CC4A >535           BVC   :SLOT2     
00CC48: A9 C1       >536           LDA   #$C1       
00CC4A: 48          >537  :SLOT2   PHA              ;used by Pascal routine in simulated JSR
                    >538  
00CC4B: AD 30 C9    >539           LDA   SLOTCN     
00CC4E: 48          >540           PHA              
00CC4F: A9 DB       >541           LDA   #TOPASCAL  
00CC51: 48          >542           PHA              
00CC52: AD 04 C9    >543           LDA   ASAVESEG   ;restore Acc
00CC55: 60          >544           RTS              ;goto slot space routine
                    >545  
                    >546  ********************
                    >547  * BEEP AND INDICATE WHERE ERROR IS AND DISPLAY ERROR NUMBER
                    >548  
                    >549  ERRBEEP                   
00CC56: 48          >550           PHA              ;SAVE ERROR NUMBER
00CC57: 98          >551           TYA              
00CC58: D0 02 =CC5C >552           BNE   YNOTZER0   
00CC5A: A9 01       >553           LDA   #1         
                    >554  YNOTZER0                  
00CC5C: AA          >555           TAX              ;IF Y=0 THEN 256 SPACES PRINTED
00CC5D: 20 AE CF    >556           JSR   TRANSFR5   ;PRINT SPACES
00CC60: 27          >557           DFB   PRBL2C      ;CODE
00CC61: A9 DE       >558           LDA   #"^"       
00CC63: 20 AE CF    >559           JSR   TRANSFR5   ;INDICATE WHERE ERROR WAS
00CC66: 07          >560           DFB   COUTC       ;CODE
00CC67: 20 AE CF    >561           JSR   TRANSFR5   ;PRINT "ERR" RING BELL
00CC6A: 1F          >562           DFB   PRERRC      ;CODE
                    >563  
00CC6B: 68          >564           PLA              ;GET ERROR NUMBER
00CC6C: 20 AE CF    >565           JSR   TRANSFR5   ;PRINT ERROR NUMBER
00CC6F: 37          >566           DFB   PRBYTEC     ;code
00CC70: 60          >567           RTS              
                    >568  
                    >569  *------------------------------------
                    >570  * CHECK FOR ACCESS TO NO ACCESS RANGE
                    >571  *------------------------------------
                    >572  
                    >573  CKACCES                   
00CC71: 2C A1 C8    >574           BIT   NOACCESS   ;N RANGES ACTIVE ?
00CC74: 10 62 =CCD8 >575           BPL   :END        ;IF NOT
00CC76: AD 9E C8    >576           LDA   TFLAG       ;TRACE MODE ?
00CC79: F0 5D =CCD8 >577           BEQ   :END        ;IF NOT
                    >578  
00CC7B: A2 1E       >579           LDX   #30        
00CC7D: BD D7 C8    >580  :CHECK   LDA   PROTADR,X  ;GET PW TYPE
00CC80: C9 CE       >581           CMP   #"N"        ;IS IT NO ACCESS ?
00CC82: D0 3D =CCC1 >582           BNE   :NEXT       ;IF NO
00CC84: 20 D9 CC    >583           JSR   CHKRANG     ;IS PC IN RANGE ?
00CC87: B0 41 =CCCA >584           BCS   :IN         ;IF YES
00CC89: AD 5F C9    >585           LDA   NUMDISP     ;# BYTES IN INST-1
00CC8C: F0 33 =CCC1 >586           BEQ   :NEXT       ;ONE BYTE INSTR HAS NO EFF ADRS
00CC8E: AD 45 C8    >587           LDA   MODE        ;# MODE ?
00CC91: F0 2E =CCC1 >588           BEQ   :NEXT       ;# MODE NO EFF ADRS
                    >589  * IS EFFADRS IN RANGE ?
00CC93: BD D8 C8    >590           LDA   PROTADR+1,X ;GET PBR
00CC96: CD D6 C8    >591           CMP   EFFADRS+2  ;COMPARE WITH EFF PBR
00CC99: D0 26 =CCC1 >592           BNE   :NEXT       ;IF NOT IN RANGE
00CC9B: AD D5 C8    >593           LDA   EFFADRS+1  ;EFF PCHI
00CC9E: DD D9 C8    >594           CMP   PROTADR+2,X ;COMPARE WITH LOWER LIMIT PCHI
00CCA1: 90 1E =CCC1 >595           BLT   :NEXT       ;NOT IN RANGE
00CCA3: D0 0B =CCB0 >596           BNE   :CHKUP      ;CHECK UPPER LIMIT
00CCA5: AD D4 C8    >597           LDA   EFFADRS     ;EFF PCLO
00CCA8: DD DA C8    >598           CMP   PROTADR+3,X ;COMPARE WITH LOWER LIMIT PCLO
00CCAB: 90 14 =CCC1 >599           BLT   :NEXT       ;NOT IN RANGE
00CCAD: AD D5 C8    >600           LDA   EFFADRS+1  ;EFF PCHI
00CCB0: DD DB C8    >601  :CHKUP   CMP   PROTADR+4,X ;COMPARE WITH UPPER LIMIT PCHI
00CCB3: 90 15 =CCCA >602           BLT   :IN         ;IN RANGE
00CCB5: D0 0A =CCC1 >603           BNE   :NEXT       ;NOT IN RANGE
00CCB7: AD D4 C8    >604           LDA   EFFADRS     ;EFF PCLO
00CCBA: DD DC C8    >605           CMP   PROTADR+5,X ;COMPARE WITH UPPER LIMIT PCLO
00CCBD: 90 0B =CCCA >606           BLT   :IN         ;IN RANGE
00CCBF: F0 09 =CCCA >607           BEQ   :IN         ;IN RANGE
00CCC1: 38          >608  :NEXT    SEC              
00CCC2: 8A          >609           TXA              ;GOTO NEXT PROTADR
00CCC3: E9 06       >610           SBC   #6         
00CCC5: AA          >611           TAX              
00CCC6: 10 B5 =CC7D >612           BPL   :CHECK     
00CCC8: 30 0E =CCD8 >613           BMI   :END        ;NOT IN NO ACCESS RANGE
                    >614  
                    >615  * IN NO ACCESS RANGE SO DISPLAY MESSAGE & STOP TRACE
                    >616  
00CCCA: 20 AE CF    >617  :IN      JSR   TRANSFR5   ;DISPLAY "NO ACCESS HALT"
00CCCD: 24          >618           DFB   NOACMSGC   ;code
00CCCE: A9 01       >619           LDA   #1          ;STOP TRACE
00CCD0: 8D 9D C8    >620           STA   TCOUNT+1   
00CCD3: A9 00       >621           LDA   #0         
00CCD5: 8D 9C C8    >622           STA   TCOUNT     
00CCD8: 60          >623  :END     RTS              
                    >624  
                    >625  * IS THE CURRENT PBR, PCHI, PCLO IN THIS PROT WINDOW LIMITS ?
                    >626  * SEC IF YES
                    >627  
00CCD9: BD D8 C8    >628  CHKRANG  LDA   PROTADR+1,X ;GET PBR
00CCDC: CD 1D C8    >629           CMP   PBR        
00CCDF: D0 26 =CD07 >630           BNE   :NOTIN      ;NOT IN
00CCE1: AD 1C C8    >631           LDA   PCHI       
00CCE4: DD D9 C8    >632           CMP   PROTADR+2,X ;COMPARE WITH LOWER LIMIT PCHI
00CCE7: 90 1E =CD07 >633           BLT   :NOTIN      ;NOT IN
00CCE9: D0 0B =CCF6 >634           BNE   :CHKUP      ;CHECK UPPER LIMIT
00CCEB: AD 1B C8    >635           LDA   PCLO       
00CCEE: DD DA C8    >636           CMP   PROTADR+3,X ;COMPARE WITH LOWER LIMIT PCLOW
00CCF1: 90 14 =CD07 >637           BLT   :NOTIN      ;IF NOT IN RANGE
00CCF3: AD 1C C8    >638           LDA   PCHI       
                    >639  
00CCF6: DD DB C8    >640  :CHKUP   CMP   PROTADR+4,X ;COMPARE WITH UPPER LIMIT PCHI
00CCF9: 90 0E =CD09 >641           BLT   :IN         ;IF IN
00CCFB: D0 0A =CD07 >642           BNE   :NOTIN      ;IF NOT IN
00CCFD: AD 1B C8    >643           LDA   PCLO       
00CD00: DD DC C8    >644           CMP   PROTADR+5,X ;COMPARE WITH UPPER LIMIT PCLOW
00CD03: 90 04 =CD09 >645           BLT   :IN         ;IN RANGE
00CD05: F0 02 =CD09 >646           BEQ   :IN         ;INCLUSIVE
00CD07: 18          >647  :NOTIN   CLC              
00CD08: 60          >648           RTS              
00CD09: 38          >649  :IN      SEC              
00CD0A: 60          >650           RTS              
                    >651  
                    >652  *----------------------------------------
                    >653  * Wait for 'return' or 'esc'
                    >654  * returns C=0 on return, C=1 on esc
                    >655  
                    >656  WAITCR                    
00CD0B: 20 0A CB    >657           JSR   WRINIT5    
00CD0E: B9 87 C9    >658  :MORE    LDA   MSGCRES,Y  ;GET CHAR
00CD11: 20 14 CB    >659           JSR   WRITECK5   ;DISPLAY
00CD14: 90 F8 =CD0E >660           BCC   :MORE       ;<ALWAYS>
                    >661  
00CD16: 20 AE CF    >662  :WAIT    JSR   TRANSFR5   ;GET INPUT
00CD19: 17          >663           DFB   RDCHARC    ;code
00CD1A: C9 9B       >664           CMP   #ESC       ;was it 'esc' ?
00CD1C: F0 05 =CD23 >665           BEQ   :EXIT      ;if yes (C=1)
00CD1E: C9 8D       >666           CMP   #CR        ;was it 'return' ?
00CD20: D0 F4 =CD16 >667           BNE   :WAIT      ;if no
00CD22: 18          >668           CLC              ;if yes (C=0)
00CD23: 08          >669  :EXIT    PHP              ;save Carry
00CD24: 20 AE CF    >670           JSR   TRANSFR5   ;do carriage return
00CD27: 0F          >671           DFB   CROUTC     ;code
00CD28: 28          >672           PLP              ;restore Carry
00CD29: 60          >673           RTS              
                    >674  
                    >675  ********* SAVE THE ACC,X AND P REGISTERS ********
                    >676  
                    >677  SAVEAXP5                  
00CD2A: 08          >678           PHP              ;SAVE STATUS
00CD2B: 8E 05 C9    >679           STX   XSAVESEG   
00CD2E: 8D 04 C9    >680           STA   ASAVESEG   
00CD31: 68          >681           PLA              ;GET STATUS
00CD32: 8D 06 C9    >682           STA   PSAVESEG   ;SAVE
00CD35: 60          >683           RTS              
                    >684  
                    >685  ******** RESTORE THE ACC,X AND P REGISTERS *******
                    >686  
                    >687  RESTAXP5                  
00CD36: AE 05 C9    >688           LDX   XSAVESEG   
00CD39: AD 06 C9    >689           LDA   PSAVESEG   
00CD3C: 48          >690           PHA              
00CD3D: AD 04 C9    >691           LDA   ASAVESEG   
00CD40: 28          >692           PLP              
00CD41: 60          >693           RTS              
                    >694  
                    >695  ***** GLOBAL SUBROUTINES IN THIS SEGMENT *****
                    >696  
                    >697  SUBTABL5                  
                    >698  
            =0105   >699  GETCOMDC EQU   *-SUBTABL5*4+5+$100 
00CD42: FF C9       >700           DA    GETCOMD-1  
                    >701  
            =010D   >702  LISTC    EQU   *-SUBTABL5*4+5+$100 
00CD44: 32 CB       >703           DA    LIST-1     
                    >704  
            =0115   >705  ETVCONTC EQU   *-SUBTABL5*4+5+$100 
00CD46: D6 CB       >706           DA    ETVCONT-1  
                    >707  
            =011D   >708  DISVERSC EQU   *-SUBTABL5*4+5+$100 
00CD48: B6 CA       >709           DA    DISVERS-1  
                    >710  
            =0125   >711  COPYRC   EQU   *-SUBTABL5*4+5+$100 
00CD4A: F5 CA       >712           DA    COPYR-1    
                    >713  
            =012D   >714  TSCONTC  EQU   *-SUBTABL5*4+5+$100 
00CD4C: 1C CC       >715           DA    TSCONT-1   
                    >716  
            =0135   >717  ERRBEEPC EQU   *-SUBTABL5*4+5+$100 
00CD4E: 55 CC       >718           DA    ERRBEEP-1  
                    >719  
            =013D   >720  PASCALIOC EQU  *-SUBTABL5*4+5+$100 
00CD50: 36 CC       >721           DA    PASCALIO-1 
                    >722  
            =0145   >723  CKACCESC EQU   *-SUBTABL5*4+5+$100 
00CD52: 70 CC       >724           DA    CKACCES-1  
                    >725  
            =014D   >726  CHKRANGC EQU   *-SUBTABL5*4+5+$100 
00CD54: D8 CC       >727           DA    CHKRANG-1  
                    >728  
            =0155   >729  WAITCRC  EQU   *-SUBTABL5*4+5+$100 
00CD56: 0A CD       >730           DA    WAITCR-1   
                    >731  
                    >732  *****************************************
                    >733  *  SEGMENT CROSSOVER AREA  *
                    >734  *****************************************
                    >735  
            =0245   >737  S5END    =     $CF9D-*    
                    >738           do    nolist     
                    >739           LST   OFF        
                    >740           fin              
                    >741           ERR   *-1/$CF9D  
00CD58: FF FF FF FF >742           DS    $CF9D-*,$FF 
                    >743  
                    >744  *-------------------------------------------------
                    >745  * Go to commands in other segments
                    >746  JUMPSEG5                  
00CF9D: AD E1 C9    >747           LDA   TEMP        ;SEG # OF COMMAND
00CFA0: AE 23 C8    >748           LDX   SLOTN0     
00CFA3: EA          >749           NOP              
00CFA4: EA          >750           NOP              ;MAKE LENGTH MATCH OTHER SEGMENTS
00CFA5: 9D 80 C0    >751           STA   SEGMBASE,X ;THE NEXT INST' WILL BE IN NEW SEG
00CFA8: 20 36 CD    >752           JSR   RESTAXP5   ;RESTORE AFTER XFER FROM OTHER SEG
00CFAB: 4C 00 CA    >753           JMP   GETCOMD    
                    >754  
                    >755  * TRANSFER TO OTHER SEGMENTS
                    >756  
                    >757  TRANSFR5                  
00CFAE: 20 2A CD    >758           JSR   SAVEAXP5   
00CFB1: 68          >759           PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >760           CLC              
00CFB3: 69 01       >761           ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >762           STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >763           PLA              
00CFB9: 69 00       >764           ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >765           STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >766           PHA              
00CFBF: AD DE C9    >767           LDA   TEMPSEG    
00CFC2: 48          >768           PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 05       >769           LDA   #5          ;CURRENT SEG #
00CFC5: 48          >770           PHA              
00CFC6: 20 DD C9    >771           JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >772           STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >773           AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >774           LDX   SLOTN0     
00CFD1: 9D 80 C0    >775           STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >776  * NEW SEGMENT
00CFD4: A9 CF       >777           LDA   #>RETURN5  ;WHERE TO RETURN TO
00CFD6: 48          >778           PHA              
00CFD7: A9 ED       >779           LDA   #RETURN5   
00CFD9: 48          >780           PHA              
00CFDA: AD 44 C8    >781           LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >782           AND   #$F8        ;STRIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >783           LSR              
00CFE0: 4A          >784           LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >785  * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >786           TAX              
00CFE2: BD 43 CD    >787           LDA   SUBTABL5+1,X ;HI BYTE FIRST
00CFE5: 48          >788           PHA              
00CFE6: BD 42 CD    >789           LDA   SUBTABL5,X 
00CFE9: 48          >790           PHA              
                    >791  
00CFEA: 20 36 CD    >792           JSR   RESTAXP5   ;RESTORE REGISTERS
00CFED: 60          >793           RTS              ;USE RTS TO GOTO SUB
                    >794  
                    >795  * RETURN HERE FROM SUBROUTINE
                    >796  
            =CFED   >797  RETURN5  EQU   *-1        
00CFEE: 20 2A CD    >798           JSR   SAVEAXP5   
00CFF1: 68          >799           PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >800           LDX   SLOTN0     
00CFF5: 9D 80 C0    >801           STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 36 CD    >802           JSR   RESTAXP5   
00CFFB: 60          >803           RTS              ;RETURN TO CALLING PROGRAM
                    >804  
00CFFC: FF FF FF FF >805           DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     27            PUT   SEG6       
                    >2    ******************
                    >3    *    SSIXFONE    *
                    >4    ******************
                    >5    
                    >6             ORG   $C800      
                    >7    
                    >8    MSGBORDR                  
00C800: A0 FC A0 CD >9             ASC   " | M = STK REA WRI LNG BNK PG2 80S CXR  " 
00C828: A0 FC 26    >10            DFB   " ","|",38 
00C82B: A0 FC 26    >11            DFB   " ","|",38 
00C82E: A0 FC A0 CB >12            ASC   " | KEY BRK TYP SAV TXT MIX HGR 80C ALT  " 
00C856: A0 FC 26    >13            DFB   " ","|",38 
00C859: A0 FC AD AD >14            ASC   " |---memory-------breakpoints----stack--" 
00C881: A0 FC 0D FC >15            DFB   " ","|",13,"|",15,"|",8 
00C888: A0 FC 0D FC >16            DFB   " ","|",13,"|",15,"|",8 
00C88F: A0 FC 0D FC >17            DFB   " ","|",13,"|",15,"|",8 
00C896: A0 FC 0D FC >18            DFB   " ","|",13,"|",15,"|",8 
00C89D: A0 FC 0D FC >19            DFB   " ","|",13,"|",15,"|",8 
00C8A4: A0 FC 0D FC >20            DFB   " ","|",13,"|",15,"|",8 
00C8AB: A0 FC 0D FC >21            DFB   " ","|",13,"|",15,"|",8 
00C8B2: A0 FC 0D FC >22            DFB   " ","|",13,"|",15,"|",8 
00C8B9: A0 FC 0D FC >23            DFB   " ","|",13,"|",15,"|",8 
00C8C0: A0 FC 0D FC >24            DFB   " ","|",13,"|",15,"|",8 
00C8C7: A0 FC 0D FC >25            DFB   " ","|",13,"|",15,"|",7,"<",EOT 
                    >26   
                    >27   MSGBORD2                  
00C8D0: A0 FC 0D    >28            DFB   " ","|",13 
00C8D3: FC EE F0 F4 >29            ASC   "|npt----range---|" 
00C8E4: 08          >30            DFB   8          
00C8E5: A0 FC AD AD >31            ASC   " |--eff-adrs---|" 
00C8F5: 0F FC 08    >32            DFB   15,"|",8   
00C8F8: A0 FC 0D FC >33            DFB   " ","|",13,"|",15,"|",8 
00C8FF: A0 FC 0D FC >34            DFB   " ","|",13,"|",15,"|",8 
00C906: A0 FC 0C BC >35            DFB   " ","|",12,"<","|",15,"|",8 
00C90E: A0 FC 0D FC >36            DFB   " ","|",13,"|",15,"|",8 
00C915: A0 FC 0D FC >37            DFB   " ","|",13,"|",15,"|",EOT 
                    >38   
                    >39   ********************************
                    >40   * TABLE1
                    >41   * THE NUMBERS FROM 0 TO 182,
                    >42   * ARE OFFSETS TO THE 2 BYTES
                    >43   * OF THE PACKED MNEMONIC IN THE
                    >44   * MNEMONIC TABLE. THE OPCODE IS
                    >45   * THE MATRIX POSITION.
                    >46   ********************************
                    >47   
            =C91C   >48   TABLE1   EQU   *          
                    >49   
                    >50   *LSD-->   0 1 2 3 4 5 6 7 8 9 A B C D E F
                    >51   
00C91C: 16 52 28 52 >52            HEX   16522852A05204526252045EA0520452 
00C92C: 12 52 52 52 >53            HEX   125252529E5204521E52369A9E520452 
00C93C: 42 02 40 02 >54            HEX   420240020C0276026E02766C0C027602 
00C94C: 0E 02 02 02 >55            HEX   0E0202020C02760282022EA20C027602 
00C95C: 7A 34 B2 34 >56            HEX   7A34B2344E344A345A344A603E344A34 
00C96C: 1A 34 34 34 >57            HEX   1A3434344C344A34223466983E344A34 
00C97C: 7E 00 58 00 >58            HEX   7E005800920078006800787C3E007800 
00C98C: 1C 00 00 00 >59            HEX   1C000000920078008600729C3E007800 
00C99C: 14 8A 18 8A >60            HEX   148A188A908A8E8A320CA65C908A8E8A 
00C9AC: 06 8A 8A 8A >61            HEX   068A8A8A908A8E8AAC8AA8AA928A928A 
00C9BC: 48 44 46 44 >62            HEX   48444644484446449644946A48444644 
00C9CC: 08 44 44 44 >63            HEX   08444444484446442444A4AE48444644 
00C9DC: 2C 26 74 26 >64            HEX   2C2674262C262E263A2630B02C262E26 
00C9EC: 10 26 26 26 >65            HEX   1026262656262E262026648C3C262E26 
00C9FC: 2A 80 88 80 >66            HEX   2A8088802A803680388050B42A803680 
00CA0C: 0A 80 80 80 >67            HEX   0A80808054803680848070B642803680 
                    >68   
                    >69   ****************************************
                    >70   * THIS POINT MUST BE $CA00 OR ABOVE.
                    >71   ****************************************
                    >72   
                    >73   ***** LDA TABLE1,X *****
                    >74   
00CA1C: CD 00 C8    >75   LTABLE1  CMP   $C800       ;DISABLE EXT RAM
00CA1F: BD 1C C9    >76            LDA   TABLE1,X   
00CA22: CD 00 CF    >77            CMP   $CF00       ;ENABLE EXT RAM
00CA25: 60          >78            RTS              
                    >79   
                    >80   ***** RDKEY *****
                    >81   * FLASH PROMPT & READ CHAR
                    >82   
                    >83   TORDCHAR                  
00CA26: AD 59 C9    >84            LDA   CURSHORZ   
00CA29: 4A          >85            LSR              ;DIVIDE BY 2
00CA2A: 8D 5C C9    >86            STA   MEMHORZ     ;MEM POINTER
00CA2D: B0 25 =CA54 >87            BCS   INMAIN      ;ODD COLUMN, MAIN MEM
                    >88   
00CA2F: 2C 21 C8    >89            BIT   OFFFLAG     ;DON'T CHANGE PAGE2 SWITCH
00CA32: 30 20 =CA54 >90            BMI   INMAIN      ;IF OFF
                    >91   
                    >92   *INPUT FROM AUX MEM
                    >93   
                    >94   INAUX                     
00CA34: 8D 55 C0    >95            STA   TXTPAGE2   ;AUX ON
00CA37: AC 5C C9    >96            LDY   MEMHORZ     ;MEM POINTER
00CA3A: B1 28       >97            LDA   (BASL),Y   ;GET EXISTING CHAR
00CA3C: 8D 54 C0    >98            STA   TXTPAGE1   ;MAIN ON
00CA3F: 48          >99            PHA              ;SAVE EXISTING CHAR
00CA40: 29 A0       >100           AND   #$A0        ;ALLOW ONLY SPACE
00CA42: 09 20       >101           ORA   #$20        ;MAKE SURE ITS SPACE
00CA44: 49 80       >102           EOR   #$80        ;INVERT THE SPACE
00CA46: 20 87 CA    >103           JSR   WRTAUXIN   ;WRITE AUX, DELAY FOR FLASH
                    >104  
                    >105  * KEYPRESS WILL BE DETECTED WITH NEXT KEYIN
                    >106  * NORMAL CHAR BACK TO SCREEN
                    >107  
00CA49: 68          >108           PLA              ;GET ORIG. CHAR
00CA4A: AC 5C C9    >109           LDY   MEMHORZ     ;SCREEN MEM POINTER
00CA4D: 20 87 CA    >110           JSR   WRTAUXIN   ;PUT NORMAL CHAR BACK, DO KEYIN
00CA50: 30 20 =CA72 >111           BMI   KEYPRES     ;IF KEY PRESSED
00CA52: F0 E0 =CA34 >112           BEQ   INAUX       ;<ALWAYS> KEEP LOOKING
                    >113  
                    >114  *INPUT FROM MAIN MEM
                    >115  
00CA54: AC 5C C9    >116  INMAIN   LDY   MEMHORZ    
00CA57: B1 28       >117           LDA   (BASL),Y   ;GET EXISTING CHAR
00CA59: 48          >118           PHA              ;SAVE
00CA5A: 29 A0       >119           AND   #$A0        ;ALLOW ONLY SPACE
00CA5C: 09 20       >120           ORA   #$20        ;MAKE SURE ITS SPACE
00CA5E: 49 80       >121           EOR   #$80        ;INVERT THE SPACE
00CA60: 91 28       >122           STA   (BASL),Y   
00CA62: 20 8F CA    >123           JSR   KEYIN       ;DELAY FOR FLASH RATE
                    >124  
                    >125  * KEYPRESS DETECTED BY NEXT KEYIN
                    >126  * NORMAL CHAR BACK
                    >127  
00CA65: 68          >128           PLA              ;GET ORIG CHAR
00CA66: AC 5C C9    >129           LDY   MEMHORZ     ;SCREEN MEM POINTER
00CA69: 91 28       >130           STA   (BASL),Y   ;PUT ORIG. CHAR BACK
00CA6B: 20 8F CA    >131           JSR   KEYIN       ;CHECK FOR KEYPRESS
00CA6E: 30 02 =CA72 >132           BMI   KEYPRES    
00CA70: F0 E2 =CA54 >133           BEQ   INMAIN      ;<ALWAYS> KEEP LOOKING
            =CA72   >134  KEYPRES  EQU   *          
                    >135  
                    >136  * KEY CLICK
                    >137  
00CA72: A0 0A       >138           LDY   #10        
00CA74: A9 08       >139  KEYCLIK  LDA   #8         
00CA76: 20 AE CF    >140           JSR   TRANSFR6   ;WAIT
00CA79: 7F          >141           DFB   WAITC       ;code
00CA7A: AD 30 C0    >142           LDA   SPKR       
00CA7D: 88          >143           DEY              
00CA7E: D0 F4 =CA74 >144           BNE   KEYCLIK    
00CA80: AD 00 C0    >145           LDA   KBD         ;GET KEYCODE
00CA83: 2C 10 C0    >146           BIT   KBDSTRB    
00CA86: 60          >147           RTS              
                    >148  
                    >149  * DISPLAY CHAR TO AUX MEM AND FALL THRU TO KEYIN
                    >150  
                    >151  WRTAUXIN                  
00CA87: 8D 55 C0    >152           STA   TXTPAGE2   ;AUX ON
00CA8A: 91 28       >153           STA   (BASL),Y   ;PUT ON SCREEN
00CA8C: 8D 54 C0    >154           STA   TXTPAGE1   ;MAIN ON
                    >155  
                    >156  * CHECK FOR A KEYPRESS & DELAY FOR FLASH RATE
                    >157  * CHECK FOR KEYPRESS MUST BE IN THIS LOOP TO AVOID
                    >158  * A WAITING FOR END OF FLASH.
                    >159  
00CA8F: A0 00       >160  KEYIN    LDY   #00        
00CA91: A9 14       >161  KEYIN2   LDA   #20        
00CA93: 20 AE CF    >162           JSR   TRANSFR6   ;SMALL DELAY
00CA96: 7F          >163           DFB   WAITC       ;code
00CA97: 2C 00 C0    >164           BIT   KBD         ;CHECK FOR KEYPRES
00CA9A: 30 03 =CA9F >165           BMI   KEYINRTS   ;YES KEY PRESSED
00CA9C: 88          >166           DEY              
00CA9D: D0 F2 =CA91 >167           BNE   KEYIN2      ;NO KEEP LOOKING
                    >168  KEYINRTS                  
00CA9F: 60          >169           RTS              
                    >170  
                    >171  ***********************************
                    >172  * RESTORE THE DISPLAY SWITCHES.
                    >173  * IF INVISIBL MODE IS SET, EXCHANGE
                    >174  * THE EXT II TEXT BUFFER WITH TEXT SCREEN
                    >175  ***********************************
                    >176  
                    >177  RESTTEXT                  
00CAA0: 2C 46 C8    >178           BIT   RESTFLAG   ;HAVE DISPLAY ROUTINES BEEN USED?
00CAA3: 10 45 =CAEA >179           BPL   SET80S      ;NO, SO SCREEN IS OK
00CAA5: A9 00       >180           LDA   #00        
00CAA7: 8D 46 C8    >181           STA   RESTFLAG   ;CLEAR FLAG
00CAAA: 2C 21 C8    >182           BIT   OFFFLAG     ;IS DISPLAY TURNED OFF?
00CAAD: 30 3B =CAEA >183           BMI   SET80S      ;IF OFF THEN SKIP
                    >184  
                    >185  * RESTORE APPLE'S BASL - BAS2H, CHANGED BY EXT SCREEN OUTPUT
00CAAF: A2 03       >186           LDX   #3          ;4 BYTES
00CAB1: BD 51 C9    >187  :NEXT    LDA   BASBUF,X   ;GET FROM EXT BUF
00CAB4: 95 28       >188           STA   BASL,X      ;PUT IN APPLE'S RAM
00CAB6: CA          >189           DEX              
00CAB7: 10 F8 =CAB1 >190           BPL   :NEXT      
                    >191  
00CAB9: 2C 1E C8    >192           BIT   INVISIBL   ;CHECK INVISIBLE MODE FLAG
00CABC: 10 03 =CAC1 >193           BPL   RESTDISP   ;NOT INVISIBLE MODE SO DON'T RESTORE TEXT PAGE
                    >194                            
00CABE: 20 5F CB    >195           JSR   EXCHTEXT   ;EXCHANGE TEXT
                    >196  
                    >197  * RESTORE DISPLAY SWITCHES
                    >198  * SET THE FOLLOWING SWITCHES: 80COL, ALTCHARSET
                    >199  
                    >200  RESTDISP                  
                    >201  
00CAC1: AD AE C8    >202           LDA   DISPFLAG   ;GET FLAGS
00CAC4: A2 0C       >203           LDX   #$C         ;SWITCH OFFSET
00CAC6: 4A          >204  NEXTSW1  LSR              ;SET CARRY WITH BIT 0
00CAC7: B0 05 =CACE >205           BCS   SWCHON1     ;TURN VIDEO SWITCH ON
00CAC9: 9D 00 C0    >206           STA   $C000,X     ;SET SWITCH OFF
00CACC: 90 03 =CAD1 >207           BCC   INCSW1      ;<ALWAYS> NEXT SWITCH
00CACE: 9D 01 C0    >208  SWCHON1  STA   $C001,X     ;SWITCH ON
00CAD1: E8          >209  INCSW1   INX              
00CAD2: E8          >210           INX              ;NEXT PAIR OF SWITCHES
00CAD3: E0 10       >211           CPX   #$10        ;ALL SET?
00CAD5: 90 EF =CAC6 >212           BLT   NEXTSW1     ;IF NO
                    >213  
                    >214  *SET THE FOLLOWING SWITCHES: HIRES, PAGE2, MIXED, TEXT
                    >215  
00CAD7: A2 57       >216           LDX   #$57        ;SWITCH OFFSET
00CAD9: 4A          >217  NEXTSW2  LSR              ;SET CARRY WITH BIT0
00CADA: B0 05 =CAE1 >218           BCS   SWCHON2     ;TURN SWITCH ON
00CADC: 9D FF BF    >219           STA   $C000-1,X  ;SWITCH OFF
00CADF: 90 03 =CAE4 >220           BCC   DECSW1      ;<ALWAYS> NEXT SWITCH
00CAE1: 9D 00 C0    >221  SWCHON2  STA   $C000,X     ;SET SWITCH ON
00CAE4: CA          >222  DECSW1   DEX              
00CAE5: CA          >223           DEX              ;NEXT SWITCH
00CAE6: E0 50       >224           CPX   #$50        ;ALL SET?
00CAE8: B0 EF =CAD9 >225           BGE   NEXTSW2     ;IF NO
                    >226  
                    >227  * SET 80 COL SWITCH ALWAYS BECAUSE ITS CHANGED BY LDA & STA INDY
                    >228  
00CAEA: 2C AE C8    >229  SET80S   BIT   DISPFLAG   ;SET N BIT
00CAED: 30 05 =CAF4 >230           BMI   SWCHON3     ;TURN SWITCH ON
00CAEF: 8D 00 C0    >231           STA   $C000       ;80STORE OFF
00CAF2: 10 03 =CAF7 >232           BPL   RESTRTS     ;<ALWAYS>
00CAF4: 8D 01 C0    >233  SWCHON3  STA   $C001       ;80STORE ON
                    >234  
00CAF7: 60          >235  RESTRTS  RTS              
                    >236  
                    >237  ************************************
                    >238  * SAVE THE DISPLAY SWITCHES. IF INVISIBLE
                    >239  * MODE IS SET, EXCHANGE THE TEXT SCREEN 
                    >240  * WITH EXT II TEXT BUFFER
                    >241  ***********************************  
                    >242  
                    >243  ZPAGSAVE                  
                    >244  
                    >245  * SAVE APPLE'S BASL - BAS2H, CHANGED BY EXT SCREEN OUTPUT
00CAF8: A2 03       >246           LDX   #3          ;4 BYTES
00CAFA: B5 28       >247  :NEXT    LDA   BASL,X      ;GET FROM APPLE
00CAFC: 9D 51 C9    >248           STA   BASBUF,X   ;PUT IN EXT BUFFER
00CAFF: CA          >249           DEX              
00CB00: 10 F8 =CAFA >250           BPL   :NEXT      
                    >251  
                    >252  * SAVE THE DISPLAY SWITCHES
                    >253  
                    >254  *DISPFLAG FORMAT
                    >255  
                    >256  *BIT7 = 80STORE
                    >257  *BIT6 = VBL (NO USE)
                    >258  *BIT5 = TEXT
                    >259  *BIT4 = MIXED
                    >260  *BIT3 = PAGE2
                    >261  *BIT2 = HIRES
                    >262  *BIT1 = ALTCHARSET
                    >263  *BIT0 = 80COL
                    >264  
                    >265  SAVEDISP                  
00CB02: A9 00       >266           LDA   #0         
00CB04: 8D 15 C9    >267           STA   INITFLAG   ;CLEAR (USERS PROGRAM RUN) FLAG
00CB07: A2 07       >268           LDX   #7          ;SWITCH OFFSET
                    >269  :SAVE                     
00CB09: BD 18 C0    >270           LDA   $C018,X     ;GET STATUS
00CB0C: 29 80       >271           AND   #$80        ;STRIP ALL BUT MSB
00CB0E: 4E AE C8    >272           LSR   DISPFLAG   ;MAKE ROOM FOR NEXT FLAG
00CB11: 0D AE C8    >273           ORA   DISPFLAG   ;MIX WITH OTHER FLAGS
00CB14: 8D AE C8    >274           STA   DISPFLAG   ;SAVE RESULT
00CB17: CA          >275           DEX              ;DEX FLAG COUNTER
00CB18: 10 EF =CB09 >276           BPL   :SAVE       ;MORE FLAGS
                    >277  
00CB1A: 20 3A CB    >278           JSR   SETMSTAT   ;SET MSTATE REGISTER
                    >279  * SET ACTIVE PERIPHERAL SLOT
00CB1D: AD F8 07    >280           LDA   $7F8        ;CURRENT ACTIVE SLOT
00CB20: 8D 85 C8    >281           STA   ACTVSLOT   ;PUT IN I/O SPACE ROUTINE
                    >282  
00CB23: 2C 1E C8    >283           BIT   INVISIBL   ;TEST INVISIBLE MODE
00CB26: 10 CF =CAF7 >284           BPL   RESTRTS     ;NOT INV. MODE
00CB28: 2C 21 C8    >285           BIT   OFFFLAG     ;IS DISPLAY OFF ?
00CB2B: 30 CA =CAF7 >286           BMI   RESTRTS     ;IF OFF, SKIP EXCHANGE
                    >287  
00CB2D: 20 5F CB    >288           JSR   EXCHTEXT   ;EXCHANGE TEXT WITH EXT BUF
                    >289  
00CB30: 4C C1 CA    >290           JMP   RESTDISP   ;RESTORE DISPLAY SWITCHES & RTS
                    >291  
                    >292  ***** SETMSTAT *****
                    >293  
                    >294  * MEMORY STATE REGISTER (NOT THE SAME AS EDM ROMS OR IIGS)
                    >295  * USED AS INDICATOR AND FOR BANKCHEK, SETS TO CURRENT MEMORY
                    >296  * STATE SO MUST BE RUN BEFORE ANYTHING IS CHANGED.
                    >297  
                    >298  * M=
                    >299  * BIT 0=1 IF INTERNAL ROM ON ($C100-$CFFF) CXROM {$C015}
                    >300  * BIT 1=1 IF 80 STORE ON {$C018}
                    >301  * BIT 2=1 IF PAGE 2 ON {$C01C}
                    >302  * BIT 3=1 IF LC BANK 2 IS IN  0= BANK 1 {$C011}
                    >303  * BIT 4=1 IF LC IS BANKED IN  0= AUTOSTART ROM {$C012}
                    >304  * BIT 5=1 IF AUX RAM BEING WRITTEN TO ($200-$BFFF) {$C014}
                    >305  * BIT 6=1 IF AUX RAM BEING READ FROM ($200-$BFFF) {$C013}
                    >306  * BIT 7=1 IF AUX STACK & ZP & LC ON {$C016}
                    >307  
                    >308  * XOFFSET   ; OFFSETS TO VARIOUS FLAG POSITIONS
                    >309  
                    >310  XOFFSET                   
00CB33: 05 02 03 01 >311           HEX   05020301000B07 
                    >312  
                    >313  * DETERMINE MSTATE
                    >314  * SET BIT 0 FROM STORED INFO
                    >315  
                    >316  SETMSTAT                  
00CB3A: 2C 2F C9    >317           BIT   CXSTATUS   ;IS CXROM ON ?
00CB3D: 18          >318           CLC              
00CB3E: 10 01 =CB41 >319           BPL   :CXOFF      ;IF OFF
00CB40: 38          >320           SEC              
00CB41: 6E 19 C8    >321  :CXOFF   ROR   MSTATE      ;SET BIT 0
                    >322  
                    >323  * SET BIT 1-7 FROM CURRENT SWITCHES
                    >324  
00CB44: A0 06       >325           LDY   #6         
00CB46: BE 33 CB    >326  :SETM    LDX   XOFFSET,Y  
00CB49: BD 11 C0    >327           LDA   $C011,X    
00CB4C: 18          >328           CLC              
00CB4D: 10 01 =CB50 >329           BPL   :NOTSET    
00CB4F: 38          >330           SEC              
00CB50: 6E 19 C8    >331  :NOTSET  ROR   MSTATE     
00CB53: 88          >332           DEY              
00CB54: 10 F0 =CB46 >333           BPL   :SETM      
00CB56: 60          >334           RTS              
                    >335  
                    >336  ***** SETMPBR *****
                    >337  * DO SETMSTAT AND BANKCHEK
                    >338  
00CB57: 20 3A CB    >339  SETMPBR  JSR   SETMSTAT   
00CB5A: 20 AE CF    >340           JSR   TRANSFR6   ;BANKCHEK
00CB5D: 34          >341           DFB   BANKCHEKC  ;code
00CB5E: 60          >342           RTS              ;ACC = MEMPBR
                    >343  
                    >344  * SUBROUTINES USED ABOVE
                    >345  
                    >346  *********************************
                    >347  * EXCHANGE TEXT RAM AREA WITH EXT RAM
                    >348  *********************************
                    >349  
                    >350  EXCHTEXT                  
                    >351  
                    >352  * INITIALIZE POINTERS AND RAM
                    >353  
00CB5F: A2 05       >354           LDX   #$5        
                    >355  :SAVE                     
00CB61: B5 20       >356           LDA   $20,X       ;SAVE Z PAGE
00CB63: 9D 90 C8    >357           STA   ZPAGEXT,X  ;USED WHEN SAVING TEXT RAM
00CB66: CA          >358           DEX              
00CB67: 10 F8 =CB61 >359           BPL   :SAVE      
                    >360  
00CB69: A9 00       >361           LDA   #0         
00CB6B: 85 20       >362           STA   Z1LO       
00CB6D: A9 04       >363           LDA   #$04       
00CB6F: 85 21       >364           STA   Z1HI        ;$400
00CB71: A9 11       >365           LDA   #$11        ;$1-$10 ARE VIA
00CB73: 85 22       >366           STA   Z2LO       
00CB75: A9 C8       >367           LDA   #$C8       
00CB77: 85 23       >368           STA   Z2HI        ;$C810
00CB79: AE 23 C8    >369           LDX   SLOTN0     
00CB7C: 86 24       >370           STX   ZBUF5       ;SAVE TO Z PAGE
                    >371  
                    >372  *********************************
                    >373  *   W A R N I N G
                    >374  * SEGMENT DEPENDENT CODE
                    >375  ********************************* 
                    >376  
00CB7E: A9 26       >377           LDA   #%00100110 ;RAM2, ROM6
00CB80: 9D 80 C0    >378           STA   SEGMBASE,X 
00CB83: 85 25       >379           STA   ZBUF6       ;SAVE SEG#
00CB85: A2 00       >380           LDX   #00        
00CB87: A0 00       >381           LDY   #00        
00CB89: 8D 01 C0    >382           STA   STR80ON     ;ENABLE AUX ACCESS
00CB8C: 8D 54 C0    >383           STA   TXTPAGE1   ;SELECT MAIN TEXT RAM
                    >384  
                    >385  SAVENEXT                  
00CB8F: B1 20       >386           LDA   (Z1LO),Y   ;GET FROM SCREEN
00CB91: 48          >387           PHA              
00CB92: A1 22       >388           LDA   (Z2LO,X)   ;GET FROM EXT RAM
00CB94: 91 20       >389           STA   (Z1LO),Y   ;PUT ON SCREEN
00CB96: 68          >390           PLA              ;GET SCREEN VALUE
00CB97: 81 22       >391           STA   (Z2LO,X)   ;SAVE TO EXT RAM
00CB99: 20 DA CB    >392           JSR   SVTXTINC   ;RETURNS WITH CARRY SET WHEN DONE
                    >393  
                    >394  * EXCHANGE THE AUX MEM PORTION OF 80 COL DISP.
                    >395  
00CB9C: 8D 55 C0    >396           STA   TXTPAGE2   ;SELECT AUX MEM
00CB9F: B1 20       >397           LDA   (Z1LO),Y   ;GET FROM SCREEN
00CBA1: 48          >398           PHA              
00CBA2: A1 22       >399           LDA   (Z2LO,X)   ;GET FROM EXT RAM
00CBA4: 91 20       >400           STA   (Z1LO),Y   ;PUT ON SCREEN
00CBA6: 68          >401           PLA              ;GET SCREEN VALUE
00CBA7: 81 22       >402           STA   (Z2LO,X)   ;SAVE TO EXT RAM
00CBA9: 8D 54 C0    >403           STA   TXTPAGE1   ;SELECT MAIN MEM
00CBAC: 20 C3 CB    >404           JSR   INCTEXT    
00CBAF: 90 DE =CB8F >405           BCC   SAVENEXT   
                    >406  
                    >407  * RETURN RAM TO SEG 0
                    >408  
00CBB1: A6 24       >409           LDX   ZBUF5       ;GET SLOTN0 FROM Z PAGE BUFFER
                    >410  *********************************
                    >411  *  W A R N I N G
                    >412  * THIS IS SEGMENT DEPENDENT CODE
                    >413  *********************************
00CBB3: A9 06       >414           LDA   #%00000110 ;RAM0, ROM6
00CBB5: 9D 80 C0    >415           STA   SEGMBASE,X 
                    >416  
                    >417  *** RESTORE Z PAGE LOCATIONS ***
                    >418  
00CBB8: A2 05       >419           LDX   #$5        
                    >420  :REST                     
00CBBA: BD 90 C8    >421           LDA   ZPAGEXT,X  
00CBBD: 95 20       >422           STA   $20,X       ;RESTORE Z PAGE
00CBBF: CA          >423           DEX              
00CBC0: 10 F8 =CBBA >424           BPL   :REST      
                    >425  
00CBC2: 60          >426           RTS              
                    >427  
                    >428  * INC. SCREEN POINTER
                    >429  
00CBC3: C8          >430  INCTEXT  INY              
00CBC4: C0 79       >431           CPY   #$79       
00CBC6: 90 12 =CBDA >432           BLT   SVTXTINC   
00CBC8: C0 80       >433           CPY   #$80       
00CBCA: 90 F7 =CBC3 >434           BLT   INCTEXT    
00CBCC: C0 F9       >435           CPY   #$F9       
00CBCE: 90 0A =CBDA >436           BLT   SVTXTINC   
00CBD0: E6 21       >437           INC   Z1HI       
00CBD2: A5 21       >438           LDA   Z1HI       
00CBD4: C9 08       >439           CMP   #$08       
00CBD6: B0 28 =CC00 >440           BGE   NEXTTEXT   ;CARRY SET
00CBD8: A0 00       >441           LDY   #0         
                    >442  
                    >443  SVTXTINC                  
00CBDA: 18          >444           CLC              
00CBDB: A5 22       >445           LDA   Z2LO       
00CBDD: 69 01       >446           ADC   #1         
00CBDF: 85 22       >447           STA   Z2LO        ;INC EXT RAM POINTER
00CBE1: A5 23       >448           LDA   Z2HI       
00CBE3: 69 00       >449           ADC   #0         
00CBE5: C9 CA       >450           CMP   #$CA       
00CBE7: 90 14 =CBFD >451           BLT   THISSEG    
00CBE9: A6 24       >452           LDX   ZBUF5       ;GET FROM Z PAGE BUFFER
00CBEB: A5 25       >453           LDA   ZBUF6       ;GET LAST SEG# USED
00CBED: 18          >454           CLC              
00CBEE: 69 10       >455           ADC   #%00010000 ;NEXT RAM SEG
00CBF0: 85 25       >456           STA   ZBUF6       ;SAVE
00CBF2: 9D 80 C0    >457           STA   SEGMBASE,X 
00CBF5: A2 00       >458           LDX   #0          ;RESET
00CBF7: A9 11       >459           LDA   #$11        ; $C801 - $C810 ARE VIA
00CBF9: 85 22       >460           STA   Z2LO       
00CBFB: A9 C8       >461           LDA   #$C8       
00CBFD: 85 23       >462  THISSEG  STA   Z2HI       
00CBFF: 18          >463           CLC              
                    >464  NEXTTEXT                  
00CC00: 60          >465           RTS              
                    >466  
                    >467  *********************************
                    >468  * INITIALIZE EXT RAM
                    >469  *********************************
                    >470  
                    >471  INITRAMV                  
00CC01: A9 00       >472           LDA   #0         
00CC03: 8D 1D C8    >473           STA   PBR         ;DEFAULT TO BANK 0
00CC06: A9 FF       >474           LDA   #>MONITOR  ; -SET UP PCHI & PCLO
00CC08: 8D 1C C8    >475           STA   PCHI        ; - TO RETURN TO MONITOR IF GO COMMAND IS
00CC0B: 8D 36 C8    >476           STA   MEMHI       ; FOR BANKCHEK
00CC0E: A9 69       >477           LDA   #MONITOR   ; - GIVEN WITHOUT CHANGING THE PROGRAM COUNTER
00CC10: 8D 1B C8    >478           STA   PCLO        ; - AFTER ENTERING AT START1.
                    >479  
00CC13: AD 30 C9    >480           LDA   SLOTCN     
00CC16: 8D FD C9    >481           STA   RESETHI     ;HI BYTE OF RESET VECTOR
00CC19: A9 1A       >482           LDA   #RESETJMP  ;LOW BYTE OF RESET VECTOR
00CC1B: 8D FC C9    >483           STA   RESETLO     ;PUT IN EXT RAM
00CC1E: A9 FF       >484           LDA   #$FF        ;HI BYTE OF ROUTINES THAT REPLACE APPLE'S ROMS
00CC20: 8D FF C9    >485           STA   IRQHI       ;HI BYTE OF 6502 IRQ VECTOR
00CC23: 8D FB C9    >486           STA   NMIHI       ;HI BYTE OF 6502 NMI VECTOR
00CC26: 8D EB C9    >487           STA   NMIHI816   ;HI BYTE OF 65816 NMI VECTOR
00CC29: 8D E7 C9    >488           STA   BRKHI816   ;HI BYTE OF 65816 BRK VECTOR
00CC2C: A9 A2       >489           LDA   #IRQRAM8   ;LOW BYTE OF IRQ VECTOR
00CC2E: 8D FE C9    >490           STA   IRQLO       ;PUT IN EXT RAM
00CC31: A9 A9       >491           LDA   #NMIRAM8   ;LOW BYTE
00CC33: 8D FA C9    >492           STA   NMILO       ;PUT IN EXT RAM
00CC36: A9 B0       >493           LDA   #NMIRAM16  
00CC38: 8D EA C9    >494           STA   NMILO816   ;LOW BYTE OF 65816 NMI VECTOR
00CC3B: A9 B7       >495           LDA   #BRKRAM16  
00CC3D: 8D E6 C9    >496           STA   BRKLO816   ;LOW BYTE OF 65816 BRK VECTOR
                    >497  
                    >498  *WAS CARD SELECTED BY PR#N OR IN#N
                    >499  
00CC40: AD 30 C9    >500           LDA   SLOTCN      ;GET SLOT NUMBER CN
00CC43: C5 37       >501           CMP   CSWH        ;WAS PR#N USED ?
00CC45: D0 08 =CC4F >502           BNE   CHKKSW      ;IF NO
00CC47: A9 F0       >503           LDA   #COUT1APL  ;LOW ADDRESS BYTE
00CC49: 85 36       >504           STA   CSWL        ;PUT COUT1 ADDRESS IN
00CC4B: A9 FD       >505           LDA   #>COUT1APL 
00CC4D: 85 37       >506           STA   CSWH       
00CC4F: AD 30 C9    >507  CHKKSW   LDA   SLOTCN      ;GET SLOT NUMBER CN
00CC52: C5 39       >508           CMP   KSWH        ;WAS IN#N USED
00CC54: D0 08 =CC5E >509           BNE   SETUP       ;IF NO
00CC56: A9 8F       >510           LDA   #KEYIN      ;PUT KEYIN ADDRESS IN
00CC58: 85 38       >511           STA   KSWL       
00CC5A: A9 CA       >512           LDA   #>KEYIN    
00CC5C: 85 39       >513           STA   KSWH       
                    >514  
                    >515  * SET DISPLAY MODE
                    >516  
                    >517  SETUP                     
00CC5E: A2 61       >518           LDX   #POINT-TCOUNT ;CLEAR EXT RAM FROM TCOUNT TO POINT
00CC60: A9 00       >519           LDA   #00        
00CC62: 8D 20 C8    >520           STA   IOMODE      ;SET TO SCREEN I/O
00CC65: 8D 21 C8    >521           STA   OFFFLAG     ;DISPLAY ON
00CC68: 9D 9C C8    >522  :CLREXT  STA   TCOUNT,X   
00CC6B: CA          >523           DEX              
00CC6C: 10 FA =CC68 >524           BPL   :CLREXT    
00CC6E: A9 80       >525           LDA   #$80        ;DEFAULT SETUP
00CC70: 8D 1E C8    >526           STA   INVISIBL   ;SO TEXT RAM IS SAVED DURING INITIALIZATION
00CC73: 8D 1F C8    >527           STA   CMOSFLAG   ;SET 65C02
00CC76: 8D 2E C9    >528           STA   EMULATE     ;SET 65C02 DEFAULT
00CC79: A9 93       >529           LDA   #CTRLS     
00CC7B: 8D 31 C9    >530           STA   KEY         ;SET STOP KEY TO CTRL-S
                    >531  
                    >532  * INITIALIZE VIA
                    >533  
00CC7E: A9 7F       >534           LDA   #%01111111 ;DISABLE INTERRUPTS
00CC80: 8D 0E C8    >535           STA   VIAIER     
00CC83: A9 FF       >536           LDA   #$FF       
00CC85: 8D 03 C8    >537           STA   VIADRA      ;MAKE ALL A LINES OUTPUTS
00CC88: 8D 02 C8    >538           STA   VIADRB      ;" " " B " "
00CC8B: A9 00       >539           LDA   #0         
00CC8D: 8D 0B C8    >540           STA   VIAACR      ;SET UP TIMERS
00CC90: A9 FE       >541           LDA   #%11111110 ;DON'T REPLACE APPLE'S VECTORS WHILE IN EXTERM
00CC92: 8D 0C C8    >542           STA   VIAPCR      ;SET UP CA1,CA2,CB1
00CC95: A9 82       >543           LDA   #%10000010 
00CC97: 8D 39 C8    >544           STA   IERBUFF     ;INTERRUPTS TO ENABLE
                    >545  
                    >546  * MOVE INTERRUPT, CXROM ROUTINES TO EXTERM RAM
                    >547  
00CC9A: 20 AE CF    >548           JSR   TRANSFR6   
00CC9D: 22          >549           DFB   ROMTORAMC  ;code
                    >550  
                    >551  * WARM ENTRY COMES HERE
                    >552  
                    >553  WARMINIT                  
00CC9E: 20 F8 CA    >554           JSR   ZPAGSAVE   ;SAVE DISPLAY SWITCHES
00CCA1: 20 57 CB    >555           JSR   SETMPBR     ;SET MSTATE & PBR
00CCA4: 20 AE CF    >556           JSR   TRANSFR6   ;TURN DISPLAY ON
00CCA7: 2A          >557           DFB   DISPONC     ;code
00CCA8: 20 AE CF    >558           JSR   TRANSFR6   ;display copyright
00CCAB: 25          >559           DFB   COPYRC      ;code
                    >560  
00CCAC: 60          >561           RTS              
                    >562  
                    >563  ***** DISPLAY WINDOW BORDERS *****
                    >564  
                    >565  DSPBORDR                  
                    >566  
                    >567  * DON'T DISPLAY IF NOT SCREEN I/O
                    >568  
00CCAD: AD 20 C8    >569           LDA   IOMODE     
00CCB0: D0 30 =CCE2 >570           BNE   :END       
                    >571  
                    >572  * SET FULL SCREEN WINDOW WITH LEFT EDGE IN COL 42
                    >573  
00CCB2: A9 00       >574           LDA   #0         
00CCB4: 8D 57 C9    >575           STA   WINDTOP    
00CCB7: A9 28       >576           LDA   #40        
00CCB9: 8D 55 C9    >577           STA   WINDLEFT   
00CCBC: 8D 56 C9    >578           STA   WINDWDTH   
00CCBF: A9 18       >579           LDA   #24        
00CCC1: 8D 58 C9    >580           STA   WINDBTM    
00CCC4: 20 AE CF    >581           JSR   TRANSFR6   ;HOME
00CCC7: 9F          >582           DFB   HOMEC       ;code
                    >583  
                    >584  * DISPLAY BORDERS
                    >585  
00CCC8: 20 E3 CC    >586           JSR   WRINIT6    
00CCCB: B9 00 C8    >587  :MORE    LDA   MSGBORDR,Y ;GET CHAR
00CCCE: 20 ED CC    >588           JSR   WRITECK6   ;DISPLAY
00CCD1: 90 F8 =CCCB >589           BCC   :MORE      
                    >590  
00CCD3: 20 E3 CC    >591           JSR   WRINIT6    
00CCD6: B9 D0 C8    >592  :LOOP    LDA   MSGBORD2,Y ;GET CHAR
00CCD9: 20 ED CC    >593           JSR   WRITECK6   ;DISPLAY
00CCDC: 90 F8 =CCD6 >594           BCC   :LOOP      
                    >595  
00CCDE: 20 AE CF    >596           JSR   TRANSFR6   ;CLEAR LOWER RIGHT CORNER
00CCE1: 6F          >597           DFB   CLREOLC     ;code
                    >598  
00CCE2: 60          >599  :END     RTS              
                    >600  
                    >601  ****************************************
                    >602  * MUST BE BEFORE $CF00
                    >603  ****************************************
                    >604  
                    >605  * DISPLAY ASCII TEXT
                    >606  * POSITIVE NUMBERS IN MESSAGE ARE NUMBER OF SPACES
                    >607  
00CCE3: 8C 3F C8    >608  WRINIT6  STY   YBUFF       ;SAVE
00CCE6: A0 00       >609           LDY   #0         
                    >610  WRITMOR6                  
00CCE8: CD 00 C8    >611           CMP   $C800       ;DISABLE EXTRAM
00CCEB: 18          >612           CLC              ;NOT FINISHED FLAG
00CCEC: 60          >613           RTS              
                    >614  
                    >615  WRITECK6                  
00CCED: CD 00 CF    >616           CMP   $CF00       ;ENABLE RAM
00CCF0: C8          >617           INY              ;INCREMENT POINTER
00CCF1: C9 84       >618           CMP   #EOT        ;IS IT EOT
00CCF3: F0 13 =CD08 >619           BEQ   :DONE       ;IF YES WRITE IS DONE
00CCF5: 29 FF       >620           AND   #$FF        ;SET FLAGS
00CCF7: 30 08 =CD01 >621           BMI   :NOSPCE     ;IF MSB HI
00CCF9: AA          >622           TAX              
00CCFA: 20 AE CF    >623           JSR   TRANSFR6   ;PRINT SPACES
00CCFD: 27          >624           DFB   PRBL2C      ;code
00CCFE: 4C E8 CC    >625           JMP   WRITMOR6   
00CD01: 20 AE CF    >626  :NOSPCE  JSR   TRANSFR6   ;DISPLAY ON OUTPUT DEVICE
00CD04: 07          >627           DFB   COUTC       ;code
00CD05: 4C E8 CC    >628           JMP   WRITMOR6   ;WRITE MORE CHARACTERS
                    >629  :DONE                     
00CD08: 38          >630           SEC              
00CD09: 60          >631           RTS              
                    >632  
                    >633  ******************************
                    >634  *RESTORE 16 BYTES THAT WERE SAVED FROM ALTERNATE STACK
                    >635  * TO EXT RAM STACK BUFFER BECAUSE THE USERS PROGRAM
                    >636  * HAS JUST SWITCHED STACKS.
                    >637  
                    >638  RESTALTS                  
00CD0A: AE 17 C8    >639           LDX   STACK      
00CD0D: A0 0F       >640           LDY   #15        
00CD0F: B9 19 C9    >641  :NEXT    LDA   STKBUF,Y   ;GET FROM EXT RAM
00CD12: 48          >642           PHA              ;PUT IN STACK
00CD13: CA          >643           DEX              ;KEEP IN SYNC WITH STACK
00CD14: 88          >644           DEY              
00CD15: 10 F8 =CD0F >645           BPL   :NEXT      
                    >646  
00CD17: AC 23 C8    >647           LDY   SLOTN0     
                    >648  **********************************
                    >649  * WARNING, SEGMENT DEPENDENT CODE   
                    >650  **********************************
00CD1A: A9 76       >651           LDA   #%01110110 ;RAM 7, ROM 6
00CD1C: 99 80 C0    >652           STA   SEGMBASE,Y 
00CD1F: 8C 15 C8    >653           STY   YREG        ;SAVE IN THIS SEG
                    >654  
00CD22: A0 0F       >655           LDY   #15        
00CD24: 68          >656  :LOOP    PLA              ;GET FROM USER STACK
00CD25: E8          >657           INX              
00CD26: 9D 00 C9    >658           STA   STACKBUF,X ;PUT IN EXT BUFFER
00CD29: 88          >659           DEY              
00CD2A: 10 F8 =CD24 >660           BPL   :LOOP      
                    >661  
00CD2C: AC 15 C8    >662           LDY   YREG        ;SLOTN0
                    >663  ***********************************
                    >664  * WARNING, SEGMENT DEPENDENT CODE
                    >665  ***********************************
00CD2F: A9 06       >666           LDA   #%00000110 ;RAM 0, ROM 6
00CD31: 99 80 C0    >667           STA   SEGMBASE,Y 
00CD34: 60          >668           RTS              
                    >669  
                    >670  *-------------------------------------------------
                    >671  * Pascal 1.1 interface routines
                    >672  * X & Y preserved
                    >673  
                    >674  * Initialize pascal slot
00CD35: A9 0D       >675  INITPASC LDA   #$0D       ;low address byte of Pascal 1.1 init offset
00CD37: D0 07 =CD40 >676           BNE   GOPASCAL   
                    >677  
                    >678  * Wait for and get next character
00CD39: A9 0E       >679  INPASCAL LDA   #$0E       ;low address byte of Pascal 1.1 read offset
00CD3B: D0 03 =CD40 >680           BNE   GOPASCAL   
                    >681  
                    >682  * Get port status, X not saved
00CD3D: AA          >683  STATPASC TAX              ;save request code
00CD3E: A9 10       >684           LDA   #$10       ;low address byte of Pascal 1.1 status offset
                    >685  *-------------------------------------------------
                    >686  * Call the Pascal I/O interface routine. Must use TRANSFRx so we return
                    >687  * to proper segment.
                    >688  
00CD40: 8D 04 C9    >689  GOPASCAL STA   ASAVESEG   ;save Acc
00CD43: 8A          >690           TXA              
00CD44: 48          >691           PHA              ;save X
00CD45: 98          >692           TYA              
00CD46: 48          >693           PHA              ;save Y
00CD47: AD 04 C9    >694           LDA   ASAVESEG   ;restore Acc
00CD4A: 20 AE CF    >695           JSR   TRANSFR6   ;go to pascal 1.1 routine
00CD4D: 3D          >696           DFB   PASCALIOC  ;code
00CD4E: 68          >697           PLA              
00CD4F: A8          >698           TAY              ;restore Y
00CD50: 68          >699           PLA              
00CD51: AA          >700           TAX              ;restore X
00CD52: AD 04 C9    >701           LDA   ASAVESEG   ;saved during segment transfer
00CD55: 09 80       >702           ORA   #$80       ;strip parity if receiving
00CD57: 60          >703           RTS              
                    >704  
                    >705  * Send a character out pascal slot
                    >706  OUTPASCL                  
00CD58: 48          >707           PHA              ;save Acc
00CD59: 8D 04 C9    >708           STA   ASAVESEG   ;save Acc
00CD5C: 8A          >709           TXA              
00CD5D: 48          >710           PHA              ;save X
00CD5E: AD 04 C9    >711           LDA   ASAVESEG   ;restore Acc
00CD61: 29 7F       >712  :LFEED   AND   #$7F       ;STRIP PARITY
00CD63: 48          >713           PHA              ;save char to write
00CD64: A9 00       >714  :TXFULL  LDA   #$0        ;request code, 'are you ready for output?'
00CD66: 20 3D CD    >715           JSR   STATPASC   ;get serial I/O status
00CD69: 90 F9 =CD64 >716           BCC   :TXFULL    
00CD6B: 68          >717           PLA              ;char to write
00CD6C: 48          >718           PHA              
00CD6D: AA          >719           TAX              ;set X
00CD6E: A9 0F       >720           LDA   #$0F       ;low address byte of Pascal 1.1 write offset
00CD70: 20 40 CD    >721           JSR   GOPASCAL   ;send character
00CD73: 68          >722           PLA              ;character wrote
00CD74: C9 0D       >723           CMP   #CR&$7F    ;CARRIAGE RETURN?
00CD76: D0 08 =CD80 >724           BNE   :EXIT      ;NO
00CD78: 20 AE CF    >725           JSR   TRANSFR6   ;DELAY FOR CR
00CD7B: 7F          >726           DFB   WAITC      ;code
00CD7C: A9 8A       >727           LDA   #LF        
00CD7E: D0 E1 =CD61 >728           BNE   :LFEED     ;DO LINE FEED
00CD80: 68          >729  :EXIT    PLA              
00CD81: AA          >730           TAX              ;restore X
00CD82: 68          >731           PLA              ;restore Acc
00CD83: 60          >732           RTS              
                    >733  
                    >734  
                    >735  ******* SAVE THE ACC, X AND P REGISTERS *****
                    >736  
                    >737  SAVEAXP6                  
00CD84: 08          >738           PHP              ;SAVE STATUS
00CD85: 8E 05 C9    >739           STX   XSAVESEG   
00CD88: 8D 04 C9    >740           STA   ASAVESEG   
00CD8B: 68          >741           PLA              ;GET STATUS
00CD8C: 8D 06 C9    >742           STA   PSAVESEG   ;SAVE
00CD8F: 60          >743           RTS              
                    >744  
                    >745  ****** RESTORE THE ACC, X AND P REGISTERS *****
                    >746  
                    >747  RESTAXP6                  
00CD90: AE 05 C9    >748           LDX   XSAVESEG   
00CD93: AD 06 C9    >749           LDA   PSAVESEG   
00CD96: 48          >750           PHA              
00CD97: AD 04 C9    >751           LDA   ASAVESEG   
00CD9A: 28          >752           PLP              
00CD9B: 60          >753           RTS              
                    >754  
                    >755  ***** THIS SEGMENTS GLOBAL SUBROUTINES *****
                    >756  
                    >757  SUBTABL6                  
                    >758  
            =0106   >759  LTABLE1C EQU   *-SUBTABL6*4+6+$100 
00CD9C: 1B CA       >760           DA    LTABLE1-1  
                    >761  
            =010E   >762  TORDCHARC EQU  *-SUBTABL6*4+6+$100 
00CD9E: 25 CA       >763           DA    TORDCHAR-1 
                    >764  
            =0116   >765  RESTTEXTC EQU  *-SUBTABL6*4+6+$100 
00CDA0: 9F CA       >766           DA    RESTTEXT-1 
                    >767  
            =011E   >768  RESTDISPC EQU  *-SUBTABL6*4+6+$100 
00CDA2: C0 CA       >769           DA    RESTDISP-1 
                    >770  
            =0126   >771  ZPAGSAVEC EQU  *-SUBTABL6*4+6+$100 
00CDA4: F7 CA       >772           DA    ZPAGSAVE-1 
                    >773  
            =012E   >774  SAVEDISPC EQU  *-SUBTABL6*4+6+$100 
00CDA6: 01 CB       >775           DA    SAVEDISP-1 
                    >776  
            =0136   >777  INITRAMVC EQU  *-SUBTABL6*4+6+$100 
00CDA8: 00 CC       >778           DA    INITRAMV-1 
                    >779  
            =013E   >780  SETMSTATC EQU  *-SUBTABL6*4+6+$100 
00CDAA: 39 CB       >781           DA    SETMSTAT-1 
                    >782  
            =0146   >783  SETMPBRC EQU   *-SUBTABL6*4+6+$100 
00CDAC: 56 CB       >784           DA    SETMPBR-1  
                    >785  
            =014E   >786  DSPBORDRC EQU  *-SUBTABL6*4+6+$100 
00CDAE: AC CC       >787           DA    DSPBORDR-1 
                    >788  
            =0156   >789  RESTALTSC EQU  *-SUBTABL6*4+6+$100 
00CDB0: 09 CD       >790           DA    RESTALTS-1 
                    >791  
            =015E   >792  INITPASCC EQU  *-SUBTABL6*4+6+$100 
00CDB2: 34 CD       >793           DA    INITPASC-1 
                    >794  
            =0166   >795  INPASCALC EQU  *-SUBTABL6*4+6+$100 
00CDB4: 38 CD       >796           DA    INPASCAL-1 
                    >797  
            =016E   >798  STATPASCC EQU  *-SUBTABL6*4+6+$100 
00CDB6: 3C CD       >799           DA    STATPASC-1 
                    >800  
            =0176   >801  OUTPASCLC EQU  *-SUBTABL6*4+6+$100 
00CDB8: 57 CD       >802           DA    OUTPASCL-1 
                    >803  
            =017E   >804  WARMINITC EQU  *-SUBTABL6*4+6+$100 
00CDBA: 9D CC       >805           DA    WARMINIT-1 
                    >806  
                    >807  *********************************
                    >808  **** SEGMENT CROSSOVER AREA *****
                    >809  *********************************
                    >810  
            =01E1   >812  S6END    =     $CF9D-*    
                    >813           do    nolist     
                    >814           LST   OFF        
                    >815           fin              
                    >816           ERR   *-1/$CF9D  
00CDBC: FF FF FF FF >817           DS    $CF9D-*,$FF 
                    >818  
00CF9D: 20 84 CD    >819  MAIN106  JSR   SAVEAXP6   ;COME HERE TO TRANSFER TO SEGMENT0 DIRECTLY
00CFA0: AE 23 C8    >820           LDX   SLOTN0     
00CFA3: A9 05       >821           LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >822           STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 90 CD    >823           JSR   RESTAXP6   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >824           RTS              ;GOTO COMMANDS IN THIS SEGMENT
00CFAC: EA          >825           NOP              
00CFAD: EA          >826           NOP              ;MATCH LENGTH WITH SEG 5
                    >827  
                    >828  * TRANSFER TO OTHER SEGMENTS
                    >829  
                    >830  TRANSFR6                  
                    >831  
00CFAE: 20 84 CD    >832           JSR   SAVEAXP6   
00CFB1: 68          >833           PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >834           CLC              
00CFB3: 69 01       >835           ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >836           STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >837           PLA              
00CFB9: 69 00       >838           ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >839           STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >840           PHA              
00CFBF: AD DE C9    >841           LDA   TEMPSEG    
00CFC2: 48          >842           PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 06       >843           LDA   #6          ;CURRENT SEG #
00CFC5: 48          >844           PHA              
00CFC6: 20 DD C9    >845           JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >846           STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >847           AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >848           LDX   SLOTN0     
00CFD1: 9D 80 C0    >849           STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >850  * NEW SEGMENT
00CFD4: A9 CF       >851           LDA   #>RETURN6  ;WHERE TO RETURN TO
00CFD6: 48          >852           PHA              
00CFD7: A9 ED       >853           LDA   #RETURN6   
00CFD9: 48          >854           PHA              
00CFDA: AD 44 C8    >855           LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >856           AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >857           LSR              
00CFE0: 4A          >858           LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >859  * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >860           TAX              
00CFE2: BD 9D CD    >861           LDA   SUBTABL6+1,X 
00CFE5: 48          >862           PHA              
00CFE6: BD 9C CD    >863           LDA   SUBTABL6,X 
00CFE9: 48          >864           PHA              
                    >865  
00CFEA: 20 90 CD    >866           JSR   RESTAXP6   ;RESTORE REGISTERS
00CFED: 60          >867           RTS              ;USE RTS TO GOTO SUB
                    >868  
                    >869  * RETURN HERE FROM SUBROUTINE
                    >870  
            =CFED   >871  RETURN6  EQU   *-1        
00CFEE: 20 84 CD    >872           JSR   SAVEAXP6   
00CFF1: 68          >873           PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >874           LDX   SLOTN0     
00CFF5: 9D 80 C0    >875           STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 90 CD    >876           JSR   RESTAXP6   
00CFFB: 60          >877           RTS              ;RETURN TO PROGRAM
                    >878  
00CFFC: FF FF FF FF >879           DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     28            PUT   SEG7       
                    >2    *********************************
                    >3    *  SEGSEVENFONE
                    >4    *********************************
                    >5    
                    >6             ORG   $C800       ;CODE RUNS HERE
                    >7    
                    >8    * THIS SPACE IS SHARED WITH THE VIA AND THE RAM.
                    >9    
                    >10   MSGSWSET                  
00C800: ED EE E5 A0 >11   MSGMNE   ASC   "mne "84   
00C805: E1 F5 F8 A0 >12   MSGAUX   ASC   "aux "84   
00C80A: F2 EF ED A0 >13   MSGROM   ASC   "rom "84   
00C80F: F2 E1 ED A0 >14   MSGRAM   ASC   "ram "84   
00C814: A0 B1 A0 A0 >15   MSG1     ASC   " 1  "84   
00C819: A0 B2 A0 A0 >16   MSG2     ASC   " 2  "84   
00C81E: EF E6 E6 A0 >17   MSGOFF   ASC   "off "84   
00C823: EF EE A0 A0 >18   MSGON    ASC   "on  "84   
00C828: EF F5 F4 A0 >19   MSGOUT   ASC   "out "84   
00C82D: E9 EE A0 A0 >20   MSGIN    ASC   "in  "84   
00C832: B0 B2 A0 A0 >21   MSG02    ASC   "02  "84   
00C837: C3 B0 B2 A0 >22   MSGC02   ASC   "C02 "84   
00C83C: B8 B0 B2 A0 >23   MSG816   ASC   "802 "84   
00C841: 8D 8D 8D A0 >24   MSGCR    DFB   CR,CR,CR," ",EOT 
                    >25   
                    >26   ****************************************
                    >27   * THIS POINT MUST BE $CA00 OR ABOVE.
                    >28   ****************************************
                    >29   
00C846: FF FF FF FF >30            DS    $CA00-*,$FF 
                    >31   
                    >32   ********************************
                    >33   *  I/O ROUTINES
                    >34   ********************************
                    >35   
            =CA00   >36   CROUTN   EQU   *          
00CA00: A9 8D       >37   CROUT    LDA   #$8D        ;CARRIAGE RETURN
00CA02: 20 6B CA    >38   COUT     JSR   SETRTS      ;SAVE STUFF IF NEEDED
00CA05: 2C 20 C8    >39            BIT   IOMODE      ;CHECK I/O MODE
00CA08: 70 57 =CA61 >40            BVS   SEND        ;OUTPUT TO SLOT1
00CA0A: 30 55 =CA61 >41            BMI   SEND        ;SERIAL I/O
00CA0C: 2C 21 C8    >42            BIT   OFFFLAG     ;DISPLAY ENABLED?
00CA0F: 10 06 =CA17 >43            BPL   :DISP       ;IF YES
00CA11: C9 87       >44            CMP   #$87        ;BELL ?
00CA13: F0 02 =CA17 >45            BEQ   :DISP       ;IF YES RING EVEN IF DISPLAY OFF
00CA15: 18          >46            CLC              ;clear "esc" flag
                    >47   * DISLAY IS OFF SO DON'T DISPLAY
00CA16: 60          >48            RTS              
                    >49   
00CA17: 4C 56 CB    >50   :DISP    JMP   TOCOUT     
                    >51   
00CA1A: A9 A0       >52   SPACE    LDA   #$A0        ;SPACE
00CA1C: D0 E4 =CA02 >53            BNE   COUT        ;<ALWAYS>
                    >54   
00CA1E: A9 C5       >55   PRERR    LDA   #"E"       
00CA20: 20 02 CA    >56            JSR   COUT       
00CA23: A9 D2       >57            LDA   #"R"       
00CA25: 20 02 CA    >58            JSR   COUT       
00CA28: 20 02 CA    >59            JSR   COUT       
                    >60   
00CA2B: A9 87       >61   BELL     LDA   #$87        ;BELL CHAR
00CA2D: D0 D3 =CA02 >62            BNE   COUT       
                    >63   
00CA2F: 2C 20 C8    >64   RDCHAR   BIT   IOMODE      ;SERIAL I/O?
00CA32: 30 32 =CA66 >65            BMI   RECEIVE     ;IF YES
00CA34: 20 6B CA    >66            JSR   SETRTS      ;INIT DISPLAY FOR EXTII OUTPUT
00CA37: 20 AE CF    >67   :OFF     JSR   TRANSFR7   ;READ CHARACTER
00CA3A: 0E          >68            DFB   TORDCHARC  ;code
00CA3B: 60          >69            RTS              
                    >70   
00CA3C: 20 40 CA    >71   PRNTAX   JSR   PRBYTE     
00CA3F: 8A          >72            TXA              
                    >73   
00CA40: 48          >74   PRBYTE   PHA              
00CA41: 4A          >75            LSR              
00CA42: 4A          >76            LSR              
00CA43: 4A          >77            LSR              
00CA44: 4A          >78            LSR              
00CA45: 20 4B CA    >79            JSR   PRHEX      
00CA48: 68          >80            PLA              
00CA49: 29 0F       >81            AND   #$0F       
00CA4B: 09 B0       >82   PRHEX    ORA   #$B0       
00CA4D: C9 BA       >83            CMP   #$BA       
00CA4F: 90 B1 =CA02 >84            BCC   COUT       
00CA51: 69 06       >85            ADC   #$06       
00CA53: 4C 02 CA    >86            JMP   COUT       
                    >87   
00CA56: A2 03       >88   PRBLNK   LDX   #3         
                    >89   
00CA58: A9 A0       >90   PRBL2    LDA   #$A0       
00CA5A: 20 02 CA    >91   XSPACES  JSR   COUT       
00CA5D: CA          >92            DEX              
00CA5E: D0 FA =CA5A >93            BNE   XSPACES    
00CA60: 60          >94            RTS              
                    >95   
                    >96   ******* Pascal 1.1 I/O  ******
                    >97   
00CA61: 20 AE CF    >98   SEND     JSR   TRANSFR7   ;OUTPUT TO Pascal 1.1 I/O
00CA64: 76          >99            DFB   OUTPASCLC  ;code
00CA65: 60          >100           RTS              
                    >101  
00CA66: 20 AE CF    >102  RECEIVE  JSR   TRANSFR7   ;INPUT FROM Pascal 1.1 I/O
00CA69: 66          >103           DFB   INPASCALC  ;code
00CA6A: 60          >104           RTS              
                    >105  
                    >106  ************ SETRTS ************
                    >107  
                    >108  * TURN ON THE FLAG INDICATING THE SCREEN
                    >109  * RAM HAS BEEN CHANGED BY EXTERM.
                    >110  
00CA6B: 48          >111  SETRTS   PHA              ;SAVE ACC & X
00CA6C: 8A          >112           TXA              
00CA6D: 48          >113           PHA              
00CA6E: 98          >114           TYA              
00CA6F: 48          >115           PHA              ;SAVE Y
00CA70: 2C 15 C9    >116           BIT   INITFLAG   ;HAS THE USER PROGRAM BEEN EXECUTED?
00CA73: 10 0C =CA81 >117           BPL   :ZPOK       ;IF NO
00CA75: 20 AE CF    >118           JSR   TRANSFR7   ;SAVE SCREEN SWITCHES, TXT RAM IF INVIS
00CA78: 26          >119           DFB   ZPAGSAVEC  ;code
00CA79: 2C 21 C8    >120           BIT   OFFFLAG     ;DISPLAY OFF ?
00CA7C: 30 08 =CA86 >121           BMI   :NOSCRN     ;IF YES
                    >122  
00CA7E: 20 65 CC    >123           JSR   SETSCRN     ;SET THE DISPLAY SWITCHES FOR EXT2 OUTPUT
                    >124  
00CA81: A9 FF       >125  :ZPOK    LDA   #$FF        ;SET THIS FLAG TO INDICATE THAT
00CA83: 8D 46 C8    >126           STA   RESTFLAG   ; SCREEN RAM AREA HAS BEEN DISTURBED
                    >127  
00CA86: 68          >128  :NOSCRN  PLA              
00CA87: A8          >129           TAY              ;RESTORE Y
00CA88: 68          >130           PLA              
00CA89: AA          >131           TAX              ;RESTORE ACC & X
00CA8A: 68          >132           PLA              
00CA8B: 60          >133           RTS              
                    >134  
                    >135  *MUST USE THIS ROUTINE TO AVOID MESSING UP
                    >136  * THE INPUT BUFFER IN APPLE MEMORY
                    >137  
                    >138  *GET LINE SUBROUTINE
                    >139  
            =CA8C   >140  NOTCR    EQU   *          
00CA8C: BD 33 C9    >141           LDA   IN,X       
00CA8F: 20 11 CB    >142           JSR   DOCOUT     
00CA92: C9 88       >143           CMP   #LTARROW   ;IS IT LEFT ARROW
00CA94: F0 25 =CABB >144           BEQ   BCKSPC     
00CA96: C9 98       >145           CMP   #CTRLX      ;IS IT CTRL X
00CA98: F0 0C =CAA6 >146           BEQ   GETLNZ      ;IF YES
00CA9A: E0 19       >147           CPX   #25         ;RING BELL AFTER 25 CHARACTERS, AS WARNING.
00CA9C: 90 03 =CAA1 >148           BLT   NOTCR1     
00CA9E: 20 2B CA    >149  GETERR   JSR   BELL       
00CAA1: E8          >150  NOTCR1   INX              
00CAA2: E0 1E       >151           CPX   #30         ;LIMIT INPUT LINE TO 30 CHARACTERS
00CAA4: D0 19 =CABF >152           BNE   NXTCHAR    
                    >153  
00CAA6: 20 00 CA    >154  GETLNZ   JSR   CROUT      
00CAA9: AD 9E C8    >155  GETLN    LDA   TFLAG       ;TRACE MODE ?
00CAAC: F0 05 =CAB3 >156           BEQ   GETNOT      ;IF NO
00CAAE: A9 D4       >157           LDA   #"T"        ;INDICATE TRACE MODE
00CAB0: 20 02 CA    >158           JSR   COUT       
00CAB3: AD 32 C9    >159  GETNOT   LDA   PROMPT     
00CAB6: 20 02 CA    >160           JSR   COUT       
00CAB9: A2 01       >161           LDX   #$01       
00CABB: 8A          >162  BCKSPC   TXA              
00CABC: F0 F5 =CAB3 >163           BEQ   GETNOT     
00CABE: CA          >164           DEX              
00CABF: 20 2F CA    >165  NXTCHAR  JSR   RDCHAR     
00CAC2: C9 8B       >166  GETLNNO  CMP   #UPARROW   ;UP ARROW ?
00CAC4: F0 F9 =CABF >167           BEQ   NXTCHAR     ;IF YES IGNORE
00CAC6: C9 9B       >168           CMP   #ESC        ;esc key?
00CAC8: D0 01 =CACB >169           BNE   :CKRAROW   ;if no
00CACA: 60          >170           RTS              ;returns with Carry set if ESC key
                    >171  
00CACB: C9 95       >172  :CKRAROW CMP   #RTARROW   ;RIGHT ARROW ?
00CACD: D0 18 =CAE7 >173           BNE   :DELTST     ;IF NO
00CACF: AC 5C C9    >174           LDY   MEMHORZ     ;SCREEN MEM POINTER
                    >175  
                    >176  * ODD OR EVEN COLUMN
                    >177  
00CAD2: AD 59 C9    >178           LDA   CURSHORZ   ;COLUMN NUMBER
00CAD5: 4A          >179           LSR              ;SET CARRY IF ODD
00CAD6: B0 0D =CAE5 >180           BCS   :AROWMAIN  ;ODD COLUMN IS MAIN MEM.
00CAD8: 08          >181           PHP              
00CAD9: 78          >182           SEI              
00CADA: 8D 55 C0    >183           STA   TXTPAGE2   ;AUX ON
00CADD: B1 28       >184           LDA   (BASL),Y   ;GET CHAR
00CADF: 8D 54 C0    >185           STA   TXTPAGE1   ;MAIN ON
00CAE2: 28          >186           PLP              
00CAE3: 90 02 =CAE7 >187           BCC   :DELTST     ;<ALWAYS>
                    >188  :AROWMAIN                 
00CAE5: B1 28       >189           LDA   (BASL),Y   
00CAE7: C9 FF       >190  :DELTST  CMP   #DELETE    
00CAE9: D0 02 =CAED >191           BNE   :CHKDAROW  
00CAEB: A9 88       >192           LDA   #LTARROW   ;IF YES MAKE IT LEFT ARROW
                    >193  :CHKDAROW                 
00CAED: C9 8A       >194           CMP   #DNARROW   ;DOWN ARROW ?
00CAEF: D0 0D =CAFE >195           BNE   :CAPTST     ;IF NO
                    >196  * IT IS DOWN ARROW, IF TRACING SKIP NEXT INSTRUCTION
00CAF1: 2C 9E C8    >197           BIT   TFLAG       ;TRACING ?
00CAF4: F0 18 =CB0E >198           BEQ   :MAKECR     ;NOT TRACING
00CAF6: A9 BE       >199           LDA   #">"        ;MAKE ">"
00CAF8: 9D 33 C9    >200           STA   IN,X        ;PUT IN BUFFER
00CAFB: E8          >201           INX              
00CAFC: D0 10 =CB0E >202           BNE   :MAKECR     ;FOLLOW WITH <CR>
                    >203                            
00CAFE: C9 E0       >204  :CAPTST  CMP   #$E0       
00CB00: 90 02 =CB04 >205           BLT   :ADDINP    
00CB02: 29 DF       >206           AND   #$DF        ;SHIFT TO UPPER CASE
00CB04: 9D 33 C9    >207  :ADDINP  STA   IN,X        ;STORE CHAR IN BUFFER
00CB07: C9 8D       >208           CMP   #CR         ;IS IT CARRIAGE RETURN
00CB09: F0 03 =CB0E >209           BEQ   :MAKECR     ;IF YES
00CB0B: 4C 8C CA    >210           JMP   NOTCR       ;IF NO
00CB0E: 4C 00 CA    >211  :MAKECR  JMP   CROUT       ;SEND CR AND RETURN
                    >212  
                    >213  * MAKES REACHING RIGHT EDGE OF WINDOW LOOK LINE <CR>
                    >214  
00CB11: 20 02 CA    >215  DOCOUT   JSR   COUT        ;OUTPUT
00CB14: AC 59 C9    >216           LDY   CURSHORZ   
00CB17: C8          >217           INY              
00CB18: CC 56 C9    >218           CPY   WINDWDTH   ;END OF DATA AREA
00CB1B: 90 06 =CB23 >219           BLT   :OK         ;IF NO, RETURN TO GETLN
00CB1D: 68          >220           PLA              
00CB1E: 68          >221           PLA              ;RETURN TO CALLER OF GETLN
00CB1F: E8          >222           INX              ;INCLUDE LAST CHAR
00CB20: 4C 00 CA    >223           JMP   CROUT      
00CB23: 60          >224  :OK      RTS              
                    >225                            
00CB24: C9 87       >226  BELLONE  CMP   #$87        ;CTRL-G?
00CB26: D0 0D =CB35 >227           BNE   BELLRTS    
00CB28: A0 A0       >228           LDY   #$A0       
00CB2A: A9 0F       >229  BELLTWO  LDA   #$0F       
00CB2C: 20 50 CC    >230           JSR   WAIT       
00CB2F: AD 30 C0    >231           LDA   SPKR       
00CB32: 88          >232           DEY              
00CB33: D0 F5 =CB2A >233           BNE   BELLTWO    
00CB35: 60          >234  BELLRTS  RTS              
                    >235  
00CB36: AC 59 C9    >236  OUTPUT   LDY   CURSHORZ   
00CB39: 48          >237           PHA              ;SAVE ACC
00CB3A: 98          >238           TYA              
00CB3B: 4A          >239           LSR              ;DIVIDE BY 2
00CB3C: 8D 5C C9    >240           STA   MEMHORZ     ;SCREEN MEMORY POINTER
00CB3F: A8          >241           TAY              
00CB40: 68          >242           PLA              ;RESTORE ACC. (CARRY NOT AFFECTED)
00CB41: B0 05 =CB48 >243           BCS   OUTMAIN     ;MAIN MEMORY
00CB43: 20 5C CC    >244           JSR   WRITEAUX   ;WRITE ACC. TO AUX MEM.
00CB46: 90 02 =CB4A >245           BCC   INCCH       ;<ALWAYS>
00CB48: 91 28       >246  OUTMAIN  STA   (BASL),Y   
00CB4A: EE 59 C9    >247  INCCH    INC   CURSHORZ   
00CB4D: AD 59 C9    >248           LDA   CURSHORZ   
00CB50: CD 56 C9    >249           CMP   WINDWDTH   
00CB53: B0 29 =CB7E >250           BCS   RETURN     
00CB55: 60          >251           RTS              
                    >252  
                    >253  ****** EXTERMINATOR II COUT *****
                    >254  
                    >255  * OUTPUT A CHARACTER TO THE SCREEN WINDOW.
                    >256  * IF THE RIGHT SIDE OF THE WINDOW IS REACHED, THEN
                    >257  * SCROLL ALL LINES IN THE WINDOW UP 1 AND POSITION
                    >258  * THE CURSOR AT BOTTOM LEFT.
                    >259  *
                    >260  * WINDOWS MUST HAVE AN EVEN NUMBER FOR THE LEFT EDGE
                    >261  *
                    >262  
00CB56: 8C 40 C8    >263  TOCOUT   STY   YBUF2      
00CB59: 48          >264           PHA              
00CB5A: 20 62 CB    >265           JSR   VIDOUT     
00CB5D: 68          >266           PLA              
00CB5E: AC 40 C8    >267           LDY   YBUF2      
00CB61: 60          >268           RTS              
                    >269  
00CB62: C9 A0       >270  VIDOUT   CMP   #$A0        ;CONTROL CHAR?
00CB64: B0 D0 =CB36 >271           BGE   OUTPUT      ;IF NO
00CB66: A8          >272           TAY              ;OOSOTIVE #?
00CB67: 10 CD =CB36 >273           BPL   OUTPUT      ;IF YES
00CB69: C9 8A       >274           CMP   #$8A        ;LINE FEED?
00CB6B: F0 16 =CB83 >275           BEQ   LINEFEED   ;IF YES
00CB6D: C9 8D       >276           CMP   #$8D        ;CR?
00CB6F: F0 0D =CB7E >277           BEQ   RETURN      ;IF YES
00CB71: C9 88       >278           CMP   #$88        ;LEFT ARROW?
00CB73: D0 AF =CB24 >279           BNE   BELLONE     ;IF NO CHECK FOR BELL
                    >280  BACKSPAC                  
00CB75: CE 59 C9    >281           DEC   CURSHORZ   ;DECRMENT CURSOR HORIZ POSITION
00CB78: 10 03 =CB7D >282           BPL   LEFTRTS     ;POS IF NOT PAST LEFT EDGE
00CB7A: EE 59 C9    >283           INC   CURSHORZ   ;PUT BACK TO 0 AT LEFT EDGE OF WINDOW
00CB7D: 60          >284  LEFTRTS  RTS              
                    >285  
00CB7E: A9 00       >286  RETURN   LDA   #0         
00CB80: 8D 59 C9    >287           STA   CURSHORZ   ;PUT CURSOR TO LEFT EDGE OF WINDOW
                    >288  LINEFEED                  
00CB83: EE 5A C9    >289           INC   CURSVERT   ;CURSOR DOWN 1 LINE
00CB86: AD 5A C9    >290           LDA   CURSVERT   
00CB89: CD 58 C9    >291           CMP   WINDBTM     ;CHECK FOR WINDOW BOTTOM?
00CB8C: 90 46 =CBD4 >292           BCC   SETBASE     ;NO, SET NEW BASE ADDRESS
00CB8E: CE 5A C9    >293           DEC   CURSVERT   ;OFF BOTTOM, SO PUT BACK TO BOTTOM
00CB91: AD 57 C9    >294  SCROLL   LDA   WINDTOP     ;START AT TOP
00CB94: 48          >295           PHA              
00CB95: 20 D4 CB    >296           JSR   SETBASE     ;CALC BASE ADDRESS
00CB98: 8E 41 C8    >297           STX   XBUFF       ;SAVE X
00CB9B: A5 28       >298  SCROLL1  LDA   BASL        ;COPY BASL,X
00CB9D: 85 2A       >299           STA   BAS2L       ;TO BAS2L,H
00CB9F: A5 29       >300           LDA   BASH       
00CBA1: 85 2B       >301           STA   BAS2H      
00CBA3: AE 56 C9    >302           LDX   WINDWDTH   ;INIT X TO RIGHTMOST INDEX
00CBA6: CA          >303           DEX              ;PUT IN 0-79 TERMS
00CBA7: 68          >304           PLA              
00CBA8: 69 01       >305           ADC   #$01        ;INCR LINE NUMBER
00CBAA: CD 58 C9    >306           CMP   WINDBTM     ;DONE?
00CBAD: B0 1A =CBC9 >307           BCS   SCROLL3     ;YES
00CBAF: 48          >308           PHA              
00CBB0: 20 D4 CB    >309           JSR   SETBASE     ;CALC BASL,A
                    >310  SCROLL2                   
00CBB3: 8A          >311           TXA              
00CBB4: 4A          >312           LSR              ;DIVIDE BY 2
00CBB5: A8          >313           TAY              
00CBB6: B0 03 =CBBB >314           BCS   SCRLMAIN   ;MAIN MEMORY
00CBB8: AD 55 C0    >315           LDA   TXTPAGE2   ;AUX MEM ON
                    >316  SCRLMAIN                  
00CBBB: B1 28       >317           LDA   (BASL),Y   
00CBBD: 91 2A       >318           STA   (BAS2L),Y  
00CBBF: B0 03 =CBC4 >319           BCS   :SPEED      ;THIS IS FASTER
00CBC1: AD 54 C0    >320           LDA   TXTPAGE1   ;MAIN MEM
00CBC4: CA          >321  :SPEED   DEX              ;SHIFT LEFT ONE CHAR
00CBC5: 10 EC =CBB3 >322           BPL   SCROLL2    
00CBC7: 30 D2 =CB9B >323           BMI   SCROLL1    
00CBC9: AE 41 C8    >324  SCROLL3  LDX   XBUFF       ;RESTORE X
00CBCC: A0 00       >325           LDY   #$0         ;CLEAR BOTTOM LINE
00CBCE: 20 04 CC    >326           JSR   CLEOLZ     
                    >327  
00CBD1: AD 5A C9    >328  VTAB     LDA   CURSVERT   
00CBD4: 2C 20 C8    >329  SETBASE  BIT   IOMODE      ;DON'T CHANGE BASL,H IF NOT SCREEN I/O
00CBD7: 30 27 =CC00 >330           BMI   :SKIP       ;IF SERIAL I/O
00CBD9: 70 25 =CC00 >331           BVS   :SKIP       ;IF SLOT 1 I/O
00CBDB: 2C 21 C8    >332           BIT   OFFFLAG     ;DISPLAY OFF ?
00CBDE: 30 20 =CC00 >333           BMI   :SKIP       ;IF YES
                    >334  * CALC BASE ADDRESS IN BASL,H
00CBE0: 48          >335           PHA              ;CALC BASE ADR IN BASL,H
00CBE1: 4A          >336           LSR              ;FOR GIVEN LINE NUMBER
00CBE2: 29 03       >337           AND   #$03        ;0<=LINE NO.<=$17
00CBE4: 09 04       >338           ORA   #$04       
00CBE6: 85 29       >339           STA   BASH       
00CBE8: 68          >340           PLA              
00CBE9: 29 18       >341           AND   #$18       
00CBEB: 90 02 =CBEF >342           BCC   :BSCLC2    
00CBED: 69 7F       >343           ADC   #$7F       
00CBEF: 85 28       >344  :BSCLC2  STA   BASL       
00CBF1: 0A          >345           ASL              
00CBF2: 0A          >346           ASL              
00CBF3: 05 28       >347           ORA   BASL       
00CBF5: 85 28       >348           STA   BASL       
                    >349  
00CBF7: AD 55 C9    >350           LDA   WINDLEFT   
00CBFA: 4A          >351           LSR              ;DIVIDE BY 2
00CBFB: 18          >352           CLC              
00CBFC: 65 28       >353           ADC   BASL       
00CBFE: 85 28       >354           STA   BASL       
00CC00: 60          >355  :SKIP    RTS              
                    >356  
00CC01: AC 59 C9    >357  CLREOL   LDY   CURSHORZ   
00CC04: 8C 5C C9    >358  CLEOLZ   STY   MEMHORZ    
                    >359  
                    >360  * DON'T CLEAR IF NOT SCREEN I/O
00CC07: AD 20 C8    >361           LDA   IOMODE     
00CC0A: D0 1C =CC28 >362           BNE   :NOCLR     
                    >363  
00CC0C: AC 5C C9    >364  :CLEOL2  LDY   MEMHORZ    
00CC0F: 98          >365           TYA              
00CC10: 4A          >366           LSR              ;DIVIDE BY 2, CARRY SET IF ODD COLUMN
00CC11: A8          >367           TAY              
00CC12: A9 A0       >368           LDA   #$A0       
00CC14: B0 05 =CC1B >369           BCS   :CLEAR40   ;DON'T CLEAR 1ST EVEN COL IF SETTING ON ODD
00CC16: 20 5C CC    >370           JSR   WRITEAUX   ;WRITE TO SCREEN
00CC19: 90 02 =CC1D >371           BCC   :CLRCHK     ;<ALWAYS>
                    >372  :CLEAR40                  
00CC1B: 91 28       >373           STA   (BASL),Y   ;WRITE SPACE
00CC1D: EE 5C C9    >374  :CLRCHK  INC   MEMHORZ    
00CC20: AD 5C C9    >375           LDA   MEMHORZ    
00CC23: CD 56 C9    >376           CMP   WINDWDTH   ;END OF THE LINE?
00CC26: 90 E4 =CC0C >377           BLT   :CLEOL2     ;IF NO
00CC28: 60          >378  :NOCLR   RTS              
                    >379  
                    >380  ***** CLEAR AND HOME WITHIN WINDOW *****
                    >381  
00CC29: AC 57 C9    >382  CLRHOME  LDY   WINDTOP     ;START AT TOP
00CC2C: 8C 5A C9    >383           STY   CURSVERT   
00CC2F: 20 D1 CB    >384  CLRBOT   JSR   VTAB        ;INIT BASL & BASH
00CC32: A0 00       >385           LDY   #0         
00CC34: 20 04 CC    >386           JSR   CLEOLZ      ;CLEAR LINE
00CC37: EE 5A C9    >387           INC   CURSVERT   ;NEXT LINE
00CC3A: AD 5A C9    >388           LDA   CURSVERT   
00CC3D: CD 58 C9    >389           CMP   WINDBTM     ;BOTTOM?
00CC40: 90 ED =CC2F >390           BLT   CLRBOT      ;IF NO
                    >391  
                    >392  * HOME WITHOUT CLEAR
                    >393  
                    >394  HOME                      
00CC42: A0 00       >395           LDY   #0         
00CC44: 8C 59 C9    >396           STY   CURSHORZ   ;LEFT EDGE
00CC47: AC 57 C9    >397           LDY   WINDTOP     ;FINISHED 
00CC4A: 8C 5A C9    >398           STY   CURSVERT   
00CC4D: 4C D1 CB    >399           JMP   VTAB       
                    >400  
                    >401  ***** WAIT *****
                    >402  
00CC50: 38          >403  WAIT     SEC              
00CC51: 48          >404  WAIT2    PHA              
00CC52: E9 01       >405  WAIT3    SBC   #$01       
00CC54: D0 FC =CC52 >406           BNE   WAIT3      
00CC56: 68          >407           PLA              
00CC57: E9 01       >408           SBC   #$01       
00CC59: D0 F6 =CC51 >409           BNE   WAIT2      
00CC5B: 60          >410           RTS              
                    >411  
                    >412  * SUBROUTINES USED ABOVE
                    >413  
                    >414  * WRITE THE CONTENTS OF THE ACC. TO
                    >415  * AUX SCREEN MEMORY.
                    >416  
                    >417  WRITEAUX                  
00CC5C: 8D 55 C0    >418           STA   TXTPAGE2   ;AUX ON
00CC5F: 91 28       >419           STA   (BASL),Y   ;PUT ON SCREEN
00CC61: 8D 54 C0    >420           STA   TXTPAGE1   ;MAIN ON
00CC64: 60          >421           RTS              
                    >422  
                    >423  * SET THE SCREEN SWITCHES FOR OUTPUT BY THE EXT2.
                    >424  
00CC65: A9 00       >425  SETSCRN  LDA   #0         
00CC67: 8D 15 C9    >426           STA   INITFLAG   ;<TEMPORARY HERE> SHOW THAT APPLE SETUP SAVED
00CC6A: 8D 51 C0    >427           STA   TEXTON      ;TEXT MODE
00CC6D: 8D 52 C0    >428           STA   MIXEDOFF   ;ALL TEXT
00CC70: 8D 0D C0    >429           STA   COL80ON     ;80 COL DISP. ON
00CC73: 8D 01 C0    >430           STA   STR80ON     ;ALLOW TXTPAGE1 TO SWITCH MAIN/AUX
00CC76: 8D 54 C0    >431           STA   TXTPAGE1   ;PAGE1 OR MAIN MEM
00CC79: 4C D1 CB    >432           JMP   VTAB        ;INIT BASL TO LAST ACTIVE EXT WINDOW
                    >433  
                    >434  ***** DISPLAY THE FLAG WINDOW *****
                    >435  
00CC7C: 00 00 00 0A >436  FLGMOFF  HEX   00,00,00,0A,14,1E,1E,1E 
                    >437  
00CC84: 02 01 04 10 >438  ANDDSFL  HEX   02,01,04,10,20 
                    >439  
                    >440  DISFLGW                   
00CC89: AD 20 C8    >441           LDA   IOMODE      ;DON'T DISPLAY IF NOT SCREEN I/O
00CC8C: F0 01 =CC8F >442           BEQ   :NOTSER     ;IF SCREEN I/O
00CC8E: 60          >443           RTS              
                    >444  
                    >445  * SET WINDOW LIMITS, START AT 2ND LINE DOWN
                    >446  
00CC8F: A9 01       >447  :NOTSER  LDA   #1         
00CC91: 8D 57 C9    >448           STA   WINDTOP    
00CC94: A9 2A       >449           LDA   #42        
00CC96: 8D 55 C9    >450           STA   WINDLEFT   
00CC99: A9 26       >451           LDA   #38        
00CC9B: 8D 56 C9    >452           STA   WINDWDTH   
00CC9E: A9 05       >453           LDA   #5         
00CCA0: 8D 58 C9    >454           STA   WINDBTM    
00CCA3: 20 42 CC    >455           JSR   HOME       
                    >456  
                    >457  * DISPLAY 1ST ROW OF FLAGS
                    >458  
00CCA6: A2 05       >459           LDX   #5         
00CCA8: 20 58 CA    >460           JSR   PRBL2       ;5 SPACES
00CCAB: AD 19 C8    >461           LDA   MSTATE      ;MACHINE STATE
00CCAE: 48          >462           PHA              
00CCAF: A2 00       >463           LDX   #0         
00CCB1: BC 7C CC    >464  :NEXT    LDY   FLGMOFF,X  
00CCB4: 68          >465           PLA              
00CCB5: 2A          >466           ROL              
00CCB6: 48          >467           PHA              
00CCB7: 20 0F CD    >468           JSR   FLAGDISP   
00CCBA: E8          >469           INX              
00CCBB: E0 08       >470           CPX   #8         
00CCBD: D0 F2 =CCB1 >471           BNE   :NEXT      
00CCBF: 68          >472           PLA              
00CCC0: A0 41       >473           LDY   #MSGCR-MSGSWSET 
00CCC2: 20 16 CD    >474           JSR   BIT0       
                    >475  
                    >476  * DISPLAY 2ND ROW OF FLAGS
                    >477  
00CCC5: AD 31 C9    >478           LDA   KEY         ;COMMAND PREFIX KEY
00CCC8: 20 40 CA    >479           JSR   PRBYTE      ;DISPLAY AS HEX
00CCCB: A2 02       >480           LDX   #2         
00CCCD: 20 58 CA    >481           JSR   PRBL2       ;2 SPACES
00CCD0: A0 28       >482           LDY   #MSGOUT-MSGSWSET 
00CCD2: 38          >483           SEC              
00CCD3: AD FC C8    >484           LDA   REALBRK     ;0=NO REAL BRKS
00CCD6: D0 01 =CCD9 >485           BNE   :BRK        ;IF REAL BRKS
00CCD8: 18          >486           CLC              
00CCD9: 20 0F CD    >487  :BRK     JSR   FLAGDISP   
00CCDC: A0 32       >488           LDY   #MSG02-MSGSWSET 
00CCDE: 18          >489           CLC              
00CCDF: AD 1F C8    >490           LDA   CMOSFLAG   ;TYPE 02, C02, OR 816
00CCE2: F0 06 =CCEA >491           BEQ   :TYP        ;02
00CCE4: 38          >492           SEC              
00CCE5: 30 03 =CCEA >493           BMI   :TYP        ;C02
00CCE7: 18          >494           CLC              
00CCE8: A0 3C       >495           LDY   #MSG816-MSGSWSET ;816
00CCEA: 20 0F CD    >496  :TYP     JSR   FLAGDISP   
00CCED: A0 1E       >497           LDY   #MSGOFF-MSGSWSET 
00CCEF: 8C 3F C8    >498           STY   YBUFF      
00CCF2: 18          >499           CLC              
00CCF3: AD 1E C8    >500           LDA   INVISIBL   ;INVIS MODE FLAG
00CCF6: 10 01 =CCF9 >501           BPL   :INV        ;IF OFF
00CCF8: 38          >502           SEC              
00CCF9: 20 0F CD    >503  :INV     JSR   FLAGDISP   
00CCFC: A2 04       >504           LDX   #4         
00CCFE: 18          >505  :NEXTDF  CLC              
00CCFF: AD AE C8    >506           LDA   DISPFLAG   
00CD02: 3D 84 CC    >507           AND   ANDDSFL,X  ;TEST PROPER BIT
00CD05: F0 01 =CD08 >508           BEQ   :NOTSET    
00CD07: 38          >509           SEC              
00CD08: 20 0F CD    >510  :NOTSET  JSR   FLAGDISP   
00CD0B: CA          >511           DEX              
00CD0C: 10 F0 =CCFE >512           BPL   :NEXTDF    
00CD0E: 60          >513           RTS              
                    >514  
                    >515  FLAGDISP                  
00CD0F: 90 05 =CD16 >516           BCC   BIT0       
00CD11: C8          >517           INY              
00CD12: C8          >518           INY              
00CD13: C8          >519           INY              
00CD14: C8          >520           INY              
00CD15: C8          >521           INY              
00CD16: 20 22 CD    >522  BIT0     JSR   WRITMOR7   
00CD19: B9 00 C8    >523  :MORE    LDA   MSGSWSET,Y 
00CD1C: 20 27 CD    >524           JSR   WRITECK7   
00CD1F: 90 F8 =CD19 >525           BCC   :MORE      
00CD21: 60          >526           RTS              
                    >527  
                    >528  * THIS ROUTINE MUST BE ABOVE $CF00
                    >529  
                    >530  WRITMOR7                  
00CD22: 2C 00 C8    >531           BIT   $C800       ;DISABLE EXT RAM
00CD25: 18          >532           CLC              
00CD26: 60          >533           RTS              
                    >534  WRITECK7                  
00CD27: 2C 00 CF    >535           BIT   $CF00       ;ENABLE EXT RAM
00CD2A: C8          >536           INY              ;NEXT CHARACTER
00CD2B: C9 84       >537           CMP   #EOT        ;FINISHED?
00CD2D: F0 06 =CD35 >538           BEQ   WRITDON7   ;IF YES, CARRY ALSO SET
00CD2F: 20 02 CA    >539           JSR   COUT        ;DISPLAY CHARACTER
00CD32: 4C 22 CD    >540           JMP   WRITMOR7   
                    >541  WRITDON7                  
00CD35: AC 3F C8    >542           LDY   YBUFF       ;RESTORE
00CD38: 60          >543           RTS              
                    >544  
                    >545  ***** DISPLAY MEMORY WINDOW *****
                    >546  
                    >547  DISMEMW                   
00CD39: AD 20 C8    >548           LDA   IOMODE      ;DISPLAY ONLY IF SCREEN I/O
00CD3C: D0 3A =CD78 >549           BNE   :END        ;IF NOT SCREEN I/O
                    >550  
                    >551  * SET WINDOW LIMITS
                    >552  
00CD3E: A9 06       >553           LDA   #6         
00CD40: 8D 57 C9    >554           STA   WINDTOP    
00CD43: A9 2A       >555           LDA   #42        
00CD45: 8D 55 C9    >556           STA   WINDLEFT   
00CD48: A9 0D       >557           LDA   #13        
00CD4A: 8D 56 C9    >558           STA   WINDWDTH   
00CD4D: A9 12       >559           LDA   #18        
00CD4F: 8D 58 C9    >560           STA   WINDBTM    
00CD52: 20 42 CC    >561           JSR   HOME       
                    >562  
                    >563  * DISPLAY SELECTED MEMORY LOCATIONS
                    >564  
00CD55: A2 21       >565           LDX   #11*3       ;0-11 LOCATIONS 3 BYTES EACH
                    >566  :NEXTMEM                  
00CD57: BD B0 C8    >567           LDA   MEMWADR,X  ;GET DATA
00CD5A: 8D 34 C8    >568           STA   PBRADD     
00CD5D: BD B1 C8    >569           LDA   MEMWADR+1,X 
00CD60: 8D 88 C8    >570           STA   HIADD      
00CD63: BD B2 C8    >571           LDA   MEMWADR+2,X 
00CD66: 8D 87 C8    >572           STA   LOWADD     
00CD69: 20 18 CF    >573           JSR   DSMWASC     ;DISPLAY MEM W/ASCII
00CD6C: E0 00       >574           CPX   #0          ;AVOID SCROLL
00CD6E: F0 08 =CD78 >575           BEQ   :END       
00CD70: 20 7E CB    >576           JSR   RETURN     
00CD73: CA          >577           DEX              
00CD74: CA          >578           DEX              
00CD75: CA          >579           DEX              
00CD76: 10 DF =CD57 >580           BPL   :NEXTMEM   
00CD78: 60          >581  :END     RTS              
                    >582  
                    >583  ***** DISPLAY THE EFFECTIVE ADDRESS WINDOW *****
                    >584  
                    >585  DISEFFW                   
00CD79: AD 20 C8    >586           LDA   IOMODE      ;DISPLAY ONLY IF SCREEN I/O
00CD7C: D0 5E =CDDC >587           BNE   :END        ;IF NOT SCREEN I/O
                    >588  
                    >589  * SET WINDOW LIMITS
                    >590  
00CD7E: A9 13       >591           LDA   #19        
00CD80: 8D 57 C9    >592           STA   WINDTOP    
00CD83: A9 2A       >593           LDA   #42        
00CD85: 8D 55 C9    >594           STA   WINDLEFT   
00CD88: A9 0D       >595           LDA   #13        
00CD8A: 8D 56 C9    >596           STA   WINDWDTH   
00CD8D: A9 18       >597           LDA   #24        
00CD8F: 8D 58 C9    >598           STA   WINDBTM    
00CD92: 20 42 CC    >599           JSR   HOME       
                    >600  
                    >601  * GET EFFECTIVE ADDRESS
                    >602  
00CD95: AD D6 C8    >603           LDA   EFFADRS+2  ;PBR OF EFFECTIVE ADRS
00CD98: 8D 34 C8    >604           STA   PBRADD     
00CD9B: AD D5 C8    >605           LDA   EFFADRS+1  
00CD9E: 8D 88 C8    >606           STA   HIADD      
00CDA1: AD D4 C8    >607           LDA   EFFADRS    
00CDA4: 8D 87 C8    >608           STA   LOWADD     
                    >609  
                    >610  *START DISPLAY 2 BYTES BEFORE EFF ADRS
                    >611  
00CDA7: 38          >612           SEC              
00CDA8: E9 02       >613           SBC   #2         
00CDAA: 8D 87 C8    >614           STA   LOWADD     
00CDAD: AD 88 C8    >615           LDA   HIADD      
00CDB0: E9 00       >616           SBC   #0         
00CDB2: 8D 88 C8    >617           STA   HIADD      
                    >618  
                    >619  * DISPLAY 5 BYTES
                    >620  
00CDB5: A2 04       >621           LDX   #4         
                    >622  :NEXTEFF                  
00CDB7: AD 88 C8    >623           LDA   HIADD      
00CDBA: C9 C0       >624           CMP   #$C0        ;DO NOT DISPLAY SOFT SWITCHES
00CDBC: F0 03 =CDC1 >625           BEQ   :NEXT      
00CDBE: 20 18 CF    >626           JSR   DSMWASC     ;DISPLAY MEM W/ASCII
00CDC1: 18          >627  :NEXT    CLC              
00CDC2: AD 87 C8    >628           LDA   LOWADD     
00CDC5: 69 01       >629           ADC   #1          ;INC POINTER
00CDC7: 8D 87 C8    >630           STA   LOWADD     
00CDCA: AD 88 C8    >631           LDA   HIADD      
00CDCD: 69 00       >632           ADC   #0         
00CDCF: 8D 88 C8    >633           STA   HIADD      
                    >634  
00CDD2: E0 00       >635           CPX   #0          ;AVOID SCROLL
00CDD4: F0 06 =CDDC >636           BEQ   :END       
00CDD6: 20 7E CB    >637           JSR   RETURN     
00CDD9: CA          >638           DEX              
00CDDA: 10 DB =CDB7 >639           BPL   :NEXTEFF   
00CDDC: 60          >640  :END     RTS              
                    >641  
                    >642  ***** DISPLAY THE BRK WINDOW *****
                    >643  
                    >644  DISBRKW                   
00CDDD: AD 20 C8    >645           LDA   IOMODE      ;DISPLAY ONLY IF SCREEN I/O
00CDE0: D0 49 =CE2B >646           BNE   :DSEND      ;IF NOT SCREEN I/O
                    >647  
                    >648  * SET WINDOW LIMITS
                    >649  
00CDE2: A9 06       >650           LDA   #6         
00CDE4: 8D 57 C9    >651           STA   WINDTOP    
00CDE7: A9 38       >652           LDA   #56        
00CDE9: 8D 55 C9    >653           STA   WINDLEFT   
00CDEC: A9 0F       >654           LDA   #15        
00CDEE: 8D 56 C9    >655           STA   WINDWDTH   
00CDF1: A9 11       >656           LDA   #17        
00CDF3: 8D 58 C9    >657           STA   WINDBTM    
00CDF6: 20 42 CC    >658           JSR   HOME       
                    >659  
                    >660  * DISPLAY THE MOST RECENT BRK INFO
                    >661  * START WITH HARD BRK
                    >662  
00CDF9: 20 1A CA    >663           JSR   SPACE       ;SPACE
00CDFC: A9 C8       >664           LDA   #"H"       
00CDFE: 20 02 CA    >665           JSR   COUT       
00CE01: 20 AE CF    >666           JSR   TRANSFR7   ;DISPLAY HARD BRK IF ANY
00CE04: 29          >667           DFB   DSPHBPC     ;code
00CE05: 20 00 CA    >668           JSR   CROUT      
                    >669  
                    >670  * DISPLAY OTHER BRKS
                    >671  
00CE08: AC FD C8    >672           LDY   POINT       ;BRK STACK
00CE0B: F0 1E =CE2B >673           BEQ   :DSEND      ;IF NO BRKS
00CE0D: A2 09       >674           LDX   #9          ;DO 10 BRKS
00CE0F: 8E 41 C8    >675  :NEXTBP  STX   XBUFF      
00CE12: 88          >676           DEY              ;POINT AT LAST BRK
00CE13: 20 1A CA    >677           JSR   SPACE       ;SPACE
00CE16: 20 AE CF    >678           JSR   TRANSFR7   ;DISPLAY 1 BRK
00CE19: 21          >679           DFB   DSPBRKC     ;code
00CE1A: C0 00       >680           CPY   #0          ;FINISHED ?
00CE1C: F0 0D =CE2B >681           BEQ   :DSEND      ;IF YES
00CE1E: AE 41 C8    >682           LDX   XBUFF      
00CE21: E0 00       >683           CPX   #0          ;AVOID SCROLL
00CE23: F0 06 =CE2B >684           BEQ   :DSEND     
00CE25: 20 7E CB    >685           JSR   RETURN     
00CE28: CA          >686           DEX              
00CE29: 10 E4 =CE0F >687           BPL   :NEXTBP    
00CE2B: 60          >688  :DSEND   RTS              
                    >689  
                    >690  ***** DISPLAY PROTECTION WINDOW *****
                    >691  
                    >692  DISPROTW                  
00CE2C: AD 20 C8    >693           LDA   IOMODE      ;SCREEN I/O ?
00CE2F: D0 59 =CE8A >694           BNE   :END        ;IF NOT
                    >695  
                    >696  * SET WINDOW LIMITS
                    >697  
00CE31: A9 12       >698           LDA   #18        
00CE33: 8D 57 C9    >699           STA   WINDTOP    
00CE36: A9 38       >700           LDA   #56        
00CE38: 8D 55 C9    >701           STA   WINDLEFT   
00CE3B: A9 0F       >702           LDA   #15        
00CE3D: 8D 56 C9    >703           STA   WINDWDTH   
00CE40: A9 18       >704           LDA   #24        
00CE42: 8D 58 C9    >705           STA   WINDBTM    
00CE45: 20 42 CC    >706           JSR   HOME       
                    >707                            
                    >708  * DISPLAY PROTECTION INFO
                    >709  
00CE48: A2 1E       >710           LDX   #6*5        ;6 BUFFERS WITH 0-5 BYTES EACH
                    >711  :NEXTPRT                  
00CE4A: 20 1A CA    >712           JSR   SPACE       ;1 SPACE
00CE4D: BD D7 C8    >713           LDA   PROTADR,X  ;GET PROTECTION INFO
00CE50: 20 02 CA    >714           JSR   COUT        ;TYPE OF PROT
00CE53: BD D8 C8    >715           LDA   PROTADR+1,X 
00CE56: 8D 34 C8    >716           STA   PBRADD     
00CE59: BD D9 C8    >717           LDA   PROTADR+2,X 
00CE5C: 8D 88 C8    >718           STA   HIADD      
00CE5F: BD DA C8    >719           LDA   PROTADR+3,X 
00CE62: 8D 87 C8    >720           STA   LOWADD     
00CE65: 20 01 CF    >721           JSR   DSPADRS     ;DISPLAY 24 BIT ADDRESS
00CE68: A9 AE       >722           LDA   #"."       
00CE6A: 20 02 CA    >723           JSR   COUT       
00CE6D: BD DB C8    >724           LDA   PROTADR+4,X 
00CE70: 8D 88 C8    >725           STA   HIADD      
00CE73: BD DC C8    >726           LDA   PROTADR+5,X 
00CE76: 8D 87 C8    >727           STA   LOWADD     
00CE79: 20 0C CF    >728           JSR   DSP16ADR   ;DISPLAY 16 BIT ADDRESS
00CE7C: E0 00       >729           CPX   #0          ;AVOID SCROLL
00CE7E: F0 0A =CE8A >730           BEQ   :END       
00CE80: 20 7E CB    >731           JSR   RETURN     
00CE83: 8A          >732           TXA              
00CE84: 38          >733           SEC              
00CE85: E9 06       >734           SBC   #6          ;NEXT PROT BUFFER
00CE87: AA          >735           TAX              
00CE88: 10 C0 =CE4A >736           BPL   :NEXTPRT   
00CE8A: 60          >737  :END     RTS              
                    >738  
                    >739  ***** DISPLAY STACK WINDOW *****
                    >740  
                    >741  DISSTKW                   
00CE8B: AD 20 C8    >742           LDA   IOMODE      ;SCREEN I/O ?
00CE8E: D0 5A =CEEA >743           BNE   :DSEND      ;IF NOT
                    >744  
                    >745  * SET WINDOW LIMITS, START AT 2ND LINE DOWN
                    >746  
00CE90: A9 06       >747           LDA   #6         
00CE92: 8D 57 C9    >748           STA   WINDTOP    
00CE95: A9 48       >749           LDA   #72        
00CE97: 8D 55 C9    >750           STA   WINDLEFT   
00CE9A: A9 08       >751           LDA   #8         
00CE9C: 8D 56 C9    >752           STA   WINDWDTH   
00CE9F: A9 18       >753           LDA   #24        
00CEA1: 8D 58 C9    >754           STA   WINDBTM    
00CEA4: 20 42 CC    >755           JSR   HOME       
                    >756  
                    >757  * DISPLAY 18 BYTES OF STACK INFO
                    >758  
00CEA7: A2 11       >759           LDX   #17        
00CEA9: 8E 41 C8    >760           STX   XBUFF       ;COUNT
                    >761  
                    >762  * GET STACK LOCATION
                    >763  
00CEAC: A9 01       >764           LDA   #01         ;HI BYTE OF STACK
00CEAE: 8D 88 C8    >765           STA   HIADD      
00CEB1: AD 17 C8    >766           LDA   STACK       ;LOW BYTE OF STACK POINTER
                    >767  * START DISPLAY 8 BYTES ABOVE POINTER
00CEB4: 18          >768           CLC              
00CEB5: 69 0A       >769           ADC   #10        
00CEB7: 8D 87 C8    >770           STA   LOWADD     
                    >771  
                    >772  :NEXTSTK                  
00CEBA: AE 87 C8    >773           LDX   LOWADD      ;LOW BYTE OF STACK
00CEBD: 20 0C CF    >774           JSR   DSP16ADR   ;DISPLAY 16 BIT ADRS
                    >775  
00CEC0: AC 23 C8    >776           LDY   SLOTN0     
                    >777  ***********************************
                    >778  * WARNING, SEGMENT DEPENDENT CODE
                    >779  ***********************************
00CEC3: A9 77       >780           LDA   #%01110111 ;RAM 7, ROM 7
00CEC5: 99 80 C0    >781           STA   SEGMBASE,Y 
                    >782  
00CEC8: BD 00 C9    >783           LDA   STACKBUF,X ;GET FROM EXT RAM
00CECB: 48          >784           PHA              
                    >785  
                    >786  ***********************************
                    >787  * WARNING, SEGMENT DEPENDENT CODE
                    >788  ***********************************
00CECC: A9 07       >789           LDA   #%00000111 ;RAM 0, ROM 7
00CECE: 99 80 C0    >790           STA   SEGMBASE,Y 
                    >791  
00CED1: A9 BA       >792           LDA   #":"       
00CED3: 20 02 CA    >793           JSR   COUT       
00CED6: 68          >794           PLA              ;GET DATA BYTE
00CED7: 20 40 CA    >795           JSR   PRBYTE     
00CEDA: AD 41 C8    >796           LDA   XBUFF       ;AVOID SCROLL
00CEDD: F0 0B =CEEA >797           BEQ   :DSEND     
00CEDF: 20 7E CB    >798           JSR   RETURN     
00CEE2: CE 87 C8    >799           DEC   LOWADD     
00CEE5: CE 41 C8    >800           DEC   XBUFF      
00CEE8: 10 D0 =CEBA >801           BPL   :NEXTSTK   
00CEEA: 60          >802  :DSEND   RTS              
                    >803  
                    >804  ***** DISPLAY FLAG, MEM, EFF, AND STACK WINDOWS *****
                    >805  
00CEEB: 2C A4 C8    >806  DISFMES  BIT   WINDFLG     ;are windows on?
00CEEE: 30 0C =CEFC >807           BMI   :ON         ;If no then do "ON" command
                    >808  
00CEF0: 20 89 CC    >809           JSR   DISFLGW     ;DISPLAY FLAG WINDOW
00CEF3: 20 39 CD    >810           JSR   DISMEMW     ;DISPLAY MEM WINDOW
00CEF6: 20 79 CD    >811           JSR   DISEFFW     ;DISPLAY EFF WINDOW
00CEF9: 4C 8B CE    >812           JMP   DISSTKW     ;DISPLAY STK WINDOW 
                    >813  
00CEFC: 20 AE CF    >814  :ON      JSR   TRANSFR7   ;Do "ON"
00CEFF: 2A          >815           DFB   DISPONC     ;code
00CF00: 60          >816           RTS              
                    >817  
                    >818  ***** SUBROUTINES *****
                    >819  
                    >820  ***** DISPLAY 24 BIT ADDRESS *****
                    >821  * FROM PBRADD, HIADD, LOWADD
                    >822  
00CF01: AD 34 C8    >823  DSPADRS  LDA   PBRADD     
00CF04: 20 40 CA    >824           JSR   PRBYTE     
00CF07: A9 AF       >825           LDA   #"/"       
00CF09: 20 02 CA    >826           JSR   COUT       
                    >827  
                    >828  ***** ALT ENTRY, DISPLAY 16 BIT ADDRESS *****
                    >829  
                    >830  DSP16ADR                  
00CF0C: AD 88 C8    >831           LDA   HIADD      
00CF0F: 20 40 CA    >832           JSR   PRBYTE     
00CF12: AD 87 C8    >833           LDA   LOWADD     
00CF15: 4C 40 CA    >834           JMP   PRBYTE     
                    >835  
                    >836  ***** DISPLAY 24 BIT ADDRESS WITH HEX AND ASCII *****
                    >837  
00CF18: 20 01 CF    >838  DSMWASC  JSR   DSPADRS     ;DISPLAY 24 BIT ADRS
00CF1B: 20 2E CF    >839           JSR   DSPCBYT     ;DISPLAY ":" HEX BYTE
                    >840  
                    >841  * DON"T DISPLAY AS CONTROL CODES
                    >842  
00CF1E: 48          >843           PHA              
00CF1F: 20 1A CA    >844           JSR   SPACE       ;1 SPACE
00CF22: 68          >845           PLA              
00CF23: 10 06 =CF2B >846           BPL   :DISOK     
00CF25: C9 A0       >847           CMP   #$A0       
00CF27: B0 02 =CF2B >848           BGE   :DISOK     
00CF29: 09 40       >849           ORA   #$40        ;CHANGE TO UPPER CASE
00CF2B: 4C 02 CA    >850  :DISOK   JMP   COUT        ;DISPLAY ASCII
                    >851  
                    >852  ***** DISPLAY ":" WITH HEX DATA *****
                    >853  
00CF2E: A9 BA       >854  DSPCBYT  LDA   #":"       
00CF30: 20 02 CA    >855           JSR   COUT       
00CF33: A0 00       >856           LDY   #0         
00CF35: 20 AE CF    >857           JSR   TRANSFR7   ;GET CHAR
00CF38: 00          >858           DFB   LDAINDYC   ;code
00CF39: 48          >859           PHA              
00CF3A: 20 40 CA    >860           JSR   PRBYTE      ;DISPLAY AS HEX
00CF3D: 68          >861           PLA              
00CF3E: 60          >862           RTS              
                    >863  
                    >864  ******* SAVE THE ACC, X AND P REGISTERS *****
                    >865  
                    >866  SAVEAXP7                  
00CF3F: 08          >867           PHP              ;SAVE STATUS
00CF40: 8E 05 C9    >868           STX   XSAVESEG   
00CF43: 8D 04 C9    >869           STA   ASAVESEG   
00CF46: 68          >870           PLA              ;GET STATUS
00CF47: 8D 06 C9    >871           STA   PSAVESEG   ;SAVE
00CF4A: 60          >872           RTS              
                    >873  
                    >874  ****** RESTORE THE ACC, X AND P REGISTERS *****
                    >875  
                    >876  RESTAXP7                  
00CF4B: AE 05 C9    >877           LDX   XSAVESEG   
00CF4E: AD 06 C9    >878           LDA   PSAVESEG   
00CF51: 48          >879           PHA              
00CF52: AD 04 C9    >880           LDA   ASAVESEG   
00CF55: 28          >881           PLP              
00CF56: 60          >882           RTS              
                    >883  
                    >884  ***** THIS SEGMENTS GLOBAL SUBROUTINES *****
                    >885  
                    >886  SUBTABL7                  
                    >887  
            =0107   >888  COUTC    EQU   *-SUBTABL7*4+7+$100 
00CF57: 01 CA       >889           DA    COUT-1     
                    >890  
            =010F   >891  CROUTC   EQU   *-SUBTABL7*4+7+$100 
00CF59: FF C9       >892           DA    CROUT-1    
                    >893  
            =0117   >894  RDCHARC  EQU   *-SUBTABL7*4+7+$100 
00CF5B: 2E CA       >895           DA    RDCHAR-1   
                    >896  
            =011F   >897  PRERRC   EQU   *-SUBTABL7*4+7+$100 
00CF5D: 1D CA       >898           DA    PRERR-1    
                    >899  
            =0127   >900  PRBL2C   EQU   *-SUBTABL7*4+7+$100 
00CF5F: 57 CA       >901           DA    PRBL2-1    
                    >902  
            =012F   >903  PRBLNKC  EQU   *-SUBTABL7*4+7+$100 
00CF61: 55 CA       >904           DA    PRBLNK-1   
                    >905  
            =0137   >906  PRBYTEC  EQU   *-SUBTABL7*4+7+$100 
00CF63: 3F CA       >907           DA    PRBYTE-1   
                    >908  
            =013F   >909  PRNTAXC  EQU   *-SUBTABL7*4+7+$100 
00CF65: 3B CA       >910           DA    PRNTAX-1   
                    >911  
            =0147   >912  PRHEXC   EQU   *-SUBTABL7*4+7+$100 
00CF67: 4A CA       >913           DA    PRHEX-1    
                    >914  
            =014F   >915  RECEIVEC EQU   *-SUBTABL7*4+7+$100 
00CF69: 65 CA       >916           DA    RECEIVE-1  
                    >917  
            =0157   >918  GETLNC   EQU   *-SUBTABL7*4+7+$100 
00CF6B: A8 CA       >919           DA    GETLN-1    
                    >920  
            =015F   >921  GETLNZC  EQU   *-SUBTABL7*4+7+$100 
00CF6D: A5 CA       >922           DA    GETLNZ-1   
                    >923  
            =0167   >924  GETLNNOC EQU   *-SUBTABL7*4+7+$100 
00CF6F: C1 CA       >925           DA    GETLNNO-1  
                    >926  
            =016F   >927  CLREOLC  EQU   *-SUBTABL7*4+7+$100 
00CF71: 00 CC       >928           DA    CLREOL-1   
                    >929  
            =0177   >930  BELLC    EQU   *-SUBTABL7*4+7+$100 
00CF73: 2A CA       >931           DA    BELL-1     
                    >932  
            =017F   >933  WAITC    EQU   *-SUBTABL7*4+7+$100 
00CF75: 4F CC       >934           DA    WAIT-1     
                    >935  
            =0187   >936  SETSCRNC EQU   *-SUBTABL7*4+7+$100 
00CF77: 64 CC       >937           DA    SETSCRN-1  
                    >938  
            =018F   >939  VTABC    EQU   *-SUBTABL7*4+7+$100 
00CF79: D0 CB       >940           DA    VTAB-1     
                    >941  
            =0197   >942  CLRHOMEC EQU   *-SUBTABL7*4+7+$100 
00CF7B: 28 CC       >943           DA    CLRHOME-1  
                    >944  
            =019F   >945  HOMEC    EQU   *-SUBTABL7*4+7+$100 
00CF7D: 41 CC       >946           DA    HOME-1     
                    >947  
            =01A7   >948  DISFLGWC EQU   *-SUBTABL7*4+7+$100 
00CF7F: 88 CC       >949           DA    DISFLGW-1  
                    >950  
            =01AF   >951  DISMEMWC EQU   *-SUBTABL7*4+7+$100 
00CF81: 38 CD       >952           DA    DISMEMW-1  
                    >953  
            =01B7   >954  DISEFFWC EQU   *-SUBTABL7*4+7+$100 
00CF83: 78 CD       >955           DA    DISEFFW-1  
                    >956  
            =01BF   >957  DISBRKWC EQU   *-SUBTABL7*4+7+$100 
00CF85: DC CD       >958           DA    DISBRKW-1  
                    >959  
            =01C7   >960  DISPROTWC EQU  *-SUBTABL7*4+7+$100 
00CF87: 2B CE       >961           DA    DISPROTW-1 
                    >962  
            =01CF   >963  DISSTKWC EQU   *-SUBTABL7*4+7+$100 
00CF89: 8A CE       >964           DA    DISSTKW-1  
                    >965  
            =01D7   >966  DISFMESC EQU   *-SUBTABL7*4+7+$100 
00CF8B: EA CE       >967           DA    DISFMES-1  
                    >968  
                    >969  *********************************
                    >970  **** SEGMENT CROSSOVER AREA *****
                    >971  *********************************
                    >972  
            =0010   >974  S7END    =     $CF9D-*    
                    >975           do    nolist     
                    >976           LST   OFF        
                    >977           fin              
                    >978           ERR   *-1/$CF9D  
00CF8D: FF FF FF FF >979           DS    $CF9D-*,$FF 
                    >980  
00CF9D: 20 3F CF    >981  MAIN107  JSR   SAVEAXP7   ;COME HERE TO TRANSFER TO SEGMENT0 DIRECTLY
00CFA0: AE 23 C8    >982           LDX   SLOTN0     
00CFA3: A9 05       >983           LDA   #%00000101 ;RAM0,ROM5
00CFA5: 9D 80 C0    >984           STA   SEGMBASE,X ;NEXT INSTRUCTION EXECUTED FROM SEGMENT 5
00CFA8: 20 4B CF    >985           JSR   RESTAXP7   ;RESTORE AFTER TRANSFER FROM SEGMENT 5
00CFAB: 60          >986           RTS              ;GOTO COMMANDS IN THIS SEGMENT
00CFAC: EA          >987           NOP              
00CFAD: EA          >988           NOP              ;MATCH LENGTH WITH SEG 5
                    >989  
                    >990  * TRANSFER TO OTHER SEGMENTS
                    >991  
                    >992  TRANSFR7                  
                    >993  
00CFAE: 20 3F CF    >994           JSR   SAVEAXP7   
00CFB1: 68          >995           PLA              ;GET RETRUN ADDRESS FROM STACK
00CFB2: 18          >996           CLC              
00CFB3: 69 01       >997           ADC   #1          ;INC TO POINT AT CODE BYTE
00CFB5: 8D DE C9    >998           STA   TEMPSEG     ;SETUP LDA TEMPSEG ROUTINE
00CFB8: 68          >999           PLA              
00CFB9: 69 00       >1000          ADC   #0          ;ADD CARRY, IF ANY
00CFBB: 8D DF C9    >1001          STA   TEMPSEG+1  ;SETUP LDA TEMPSEG ROUTINE
00CFBE: 48          >1002          PHA              
00CFBF: AD DE C9    >1003          LDA   TEMPSEG    
00CFC2: 48          >1004          PHA              ;BUMP RETURN ADDRESS PAST CODE BYTE
00CFC3: A9 07       >1005          LDA   #7          ;CURRENT SEG #
00CFC5: 48          >1006          PHA              
00CFC6: 20 DD C9    >1007          JSR   LDATEMP     ;LOAD CODE BYTE
00CFC9: 8D 44 C8    >1008          STA   SEGMCODE   ;SAVE CODE
00CFCC: 29 07       >1009          AND   #$07        ;STRIP ALL BUT SEG #
00CFCE: AE 23 C8    >1010          LDX   SLOTN0     
00CFD1: 9D 80 C0    >1011          STA   SEGMBASE,X ;NEXT INSTR. RUN FROM NEW SEGMENT
                    >1012 * NEW SEGMENT
00CFD4: A9 CF       >1013          LDA   #>RETURN7  ;WHERE TO RETURN TO
00CFD6: 48          >1014          PHA              
00CFD7: A9 ED       >1015          LDA   #RETURN7   
00CFD9: 48          >1016          PHA              
00CFDA: AD 44 C8    >1017          LDA   SEGMCODE   ;CODE BYTE
00CFDD: 29 F8       >1018          AND   #$F8        ;STIP OFF SEG# LEAVING SUB #
00CFDF: 4A          >1019          LSR              
00CFE0: 4A          >1020          LSR              ;LEAVE SUB# MULTIPLIED BY 2
                    >1021 * GET ADDRESS OF SUB FROM SUBTABL & PUSH ON STACK
00CFE1: AA          >1022          TAX              
00CFE2: BD 58 CF    >1023          LDA   SUBTABL7+1,X 
00CFE5: 48          >1024          PHA              
00CFE6: BD 57 CF    >1025          LDA   SUBTABL7,X 
00CFE9: 48          >1026          PHA              
                    >1027 
00CFEA: 20 4B CF    >1028          JSR   RESTAXP7   ;RESTORE REGISTERS
00CFED: 60          >1029          RTS              ;USE RTS TO GOTO SUB
                    >1030 
                    >1031 * RETURN HERE FROM SUBROUTINE
                    >1032 
            =CFED   >1033 RETURN7  EQU   *-1        
00CFEE: 20 3F CF    >1034          JSR   SAVEAXP7   
00CFF1: 68          >1035          PLA              ;SEG # TO RETURN TO
00CFF2: AE 23 C8    >1036          LDX   SLOTN0     
00CFF5: 9D 80 C0    >1037          STA   SEGMBASE,X ;RETURN TO SEGMENT
00CFF8: 20 4B CF    >1038          JSR   RESTAXP7   
00CFFB: 60          >1039          RTS              ;RETURN TO PROGRAM
                    >1040 
00CFFC: FF FF FF FF >1041          DS    \,$FF      ;PUT OBJECT AT NEXT PAGE
                     29   


End Merlin-16 assembly, 16384 bytes, 0 errors, 9313 lines, 993 symbols.

Elapsed time = 18 minutes, 12 seconds.

Symbol table, alphabetical order:

   ACC     =$C811      ACTVSLOT=$C885      ADDL1   =$CEE2      ADDL2   =$CEEB      ADDRS2  =$CDA1      ADDRS2F =$C92D
   ADRHEX  =$CBD8      ALTZP   =$C016      ANDDSFL =$CC84      ASAVESEG=$C904      ASLUPMW =$CD9D      AUXZP   =$C009
   BADPAR  =$04        BADPAR0 =$CBB4      BADPARX =$CA8A      BANKCHEK=$CDB7      BANKCHEKC=$0134     BANKEFF =$CE0B
   BANKSET =$CE07      BANKTABL=$C891      BAS2H   =$2B        BAS2L   =$2A        BASBUF  =$C951      BASH    =$29
   BASL    =$28        BCKSPC  =$CABB      BEL     =$87        BELL    =$CA2B      BELLC   =$0177      BELLONE =$CB24
   BELLRTS =$CB35      BELLTWO =$CB2A      BIT0    =$CD16      BKPDIS  =$CB47      BNCHBACK=$CBAD      BPERR5  =$CB65
   BREAK   =$CA09      BREAK816=$C833      BRK16   =$CA0D      BRKDATA =$C9C8      BRKFUL  =$10        BRKHI   =$C89C
   BRKHI816=$C9E7      BRKLO816=$C9E6      BRKLOW  =$C8CE      BRKPASHI=$C964      BRKPASLO=$C996      BRKPBR  =$C86A
   BRKRAM16=$FFB7      BRKTGHI =$C900      BRKTGLOW=$C932      BRKTRC  =$CD17      BRKTYPE =$C838      BRKVEC16=$CA00
   BRKWFLG =$C8A3      BRNCHOUT=$CC07      BYTESP3 =$CE7F      CALCEFF =$CE2A      CALCEFFC=$013C      CALCTIME=$CB71
   CARDSLOT=$CE95      CARDSLT1=$CE2D      CHEKSYMB=$CAE1      CHK16X  =$CC83      CHK816  =$CC47      CHKCTRLS=$CDAC
   CHKESC  =$CDDA      CHKHEX  =$CCF7      CHKKSW  =$CC4F      CHKMODE =$CED8      CHKRANG =$CCD9      CHKRANGC=$014D
   CHKREAD =$CCFF      CHKREADA=$CD01      CHKREADAC=$0111     CHKREADC=$0109      CHKRETRN=$CA76      CHKZERO =$CA63
   CKACCES =$CC71      CKACCESC=$0145      CKRDERR =$CD38      CLEARALL=$CC74      CLEOLZ  =$CC04      CLRBOT  =$CC2F
   CLREOL  =$CC01      CLREOLC =$016F      CLRHARD =$CC81      CLRHOME =$CC29      CLRHOMEC=$0197      CLRLETER=$CF02
   CLRSHFT =$CB00      CMDMENU =$CC2B      CMNDSEG1=$C85A      CMNDSEG2=$C87C      CMNDSEG3=$C888      CMNDSEG4=$C88A
   CMNDSEG5=$C896      CMOSFLAG=$C81F      COL80ON =$C00D      COMDAST =$CCA4      COMDDOTP=$CA00      COMDDR  =$CD96
   COMDER  =$CBCF      COMDET  =$CB5E      COMDEX  =$CBA9      COMDGO  =$CAE0      COMDHB  =$CB4D      COMDJS  =$CC50
   COMDJUMP=$C84E      COMDKEY =$CA29      COMDLI  =$CB27      COMDMA  =$CA14      COMDMD  =$CBF7      COMDMM  =$CB9C
   COMDMO  =$CB97      COMDMW  =$CD18      COMDOFF =$CB86      COMDON  =$CB52      COMDPA  =$CAB0      COMDPC  =$CA7C
   COMDPP  =$CA0D      COMDPS  =$CAD1      COMDPW  =$CBD2      COMDPX  =$CABB      COMDPY  =$CAC6      COMDQU  =$CCA1
   COMDRA  =$CB96      COMDRB  =$CB76      COMDRH  =$CB90      COMDRT  =$CB91      COMDSB  =$CAF5      COMDSD  =$CB5A
   COMDSKIP=$CA00      COMDSS  =$CA47      COMDTR  =$CBAC      COMDTS  =$CE04      COMMANDS=$C800      COMMDRCL=$CAEF
   COMRTFLG=$C8FE      CONTNMI =$CB19      COPYR   =$CAF6      COPYRC  =$0125      COUT    =$CA02      COUT1APL=$FDF0
   COUT2   =$CC9C      COUT3   =$CE85      COUTC   =$0107      CR      =$8D        CROUT   =$CA00      CROUTC  =$010F
   CSWH    =$37        CSWL    =$36        CTRLS   =$93        CTRLX   =$98        CURSHORZ=$C959      CURSVERT=$C95A
   CXFLAG  =$C015      CXOFF   =$FFD5      CXOKLOAD=$C083      CXOKRTI =$C083      CXON    =$C007      CXONRTI =$C080
   CXONTFR =$C830      CXSTATUS=$C92F      CXWASOFF=$C8D8      DATA16  =$FFCB      DATABRK =$C829      DATACHK =$FFA0
   DATATFR =$C8C8      DBYTEEND=$CE7E      DECHEX  =$CE9A      DECIMAL1=$C831      DECIMAL2=$C832      DECIMAL3=$C833
   DECMEMLH=$CE8A      DECMEMLHC=$010B     DECSW1  =$CAE4      DECTGPC =$CE22      DECTGPCC=$013A      DECTOGO =$CE25
   DELETE  =$FF        DHRTS   =$CEDE      DISASM  =$CC1F      DISASMC =$0123      DISBKP  =$CDDD      DISBREAK=$CB46
   DISBRKW =$CDDD      DISBRKWC=$01BF      DISBROUT=$CACA      DISBROUTC=$0104     DISEFFW =$CD79      DISFLGW =$CC89
   DISFLGWC=$01A7      DISFMES =$CEEB      DISFMESC=$01D7      DISHARD =$CAE2      DISHARDC=$0114      DISHB   =$CE60
   DISINVBP=$CE8E      DISMEMW =$CD39      DISMEMWC=$01AF      DISMODE =$CC26      DISNOTRM=$CAD6      DISNOTRMC=$010C
   DISPADDR=$CDBA      DISPAS2 =$CE15      DISPASIS=$CDFE      DISPBYTS=$CE59      DISPFLAG=$C8AE      DISPIOR0=$CA27
   DISPON  =$CB66      DISPONC =$012A      DISPROTW=$CE2C      DISPROTWC=$01C7     DISPSIGN=$CD9E      DISPSTAT=$CA1D
   DISPTABL=$C86F      DISREG2 =$CAE6      DISSTKW =$CE8B      DISSTKWC=$01CF      DISVERS =$CAB7      DISVERSC=$011D
   DNARROW =$8A        DOCOUT  =$CB11      DOSUB   =$CDE1      DSMEMCOL=$CCBD      DSMEMCOLC=$0119     DSMWASC =$CF18
   DSP16ADR=$CF0C      DSPADRS =$CF01      DSPBORDR=$CCAD      DSPBORDRC=$014E     DSPBRK  =$CE10      DSPBRKC =$0121
   DSPCBYT =$CF2E      DSPHBP  =$CE6B      DSPHBPC =$0129      DTOHFLG =$C92C      EFFADC  =$CE4B      EFFADC2 =$CE58
   EFFADRS =$C8D4      EFFM10  =$CE80      EFFM11  =$CEDD      EFFM12  =$CEC9      EFFM13  =$CEE6      EFFM14  =$CEF5
   EFFM5   =$CE3E      EFFM6   =$CE53      EFFM7   =$CE6F      EFFM8   =$CE5E      EFFM9   =$CE6A      EFFMA   =$CE85
   EFFMB   =$CE94      EFFMC   =$CE9F      EFFMF   =$CEA4      EFFSTA  =$CE4D      EFFTABL =$C8B5      EFLAG   =$C8A8
   EMPTY   =$CCFE      EMULATE =$C92E      ENABINIT=$CF28      ENABLTVC=$C83A      ENABWRIT=$CF23      ENDDISAS=$CE51
   ENTEREXT=$CB87      EOT     =$84        ERRBEEP =$CC56      ERRBEEPC=$0135      ERREXIT0=$CBB6      ERREXIT1=$CA8C
   ERROR4  =$CA3E      ESC     =$9B        ETERR   =$CBD2      ETFLAG  =$C8AC      ETIERSAV=$C90E      ETORASAV=$C90F
   ETORBSAV=$C910      ETPCHI  =$C912      ETPCLO  =$C911      ETRESTOR=$CBFE      ETVCONT =$CBD7      ETVCONTC=$0115
   ETVECTOR=$CDFD      EXCHTEXT=$CB5F      EXCHZPAG=$CF12      EXCONT  =$CDA8      EXECMOVE=$CEA1      EXECUTE =$CEA5
   EXECUTEC=$0120      EXSETUP =$CEB1      EXTENAB =$C85B      FINDMNEM=$CA94      FINDOPCD=$CE9C      FLAGDISP=$CD0F
   FLAGON  =$CA25      FLAGS   =$C81B      FLAGSET =$CB20      FLGMOFF =$CC7C      FOUNDMNE=$CAD1      FOUNDOP =$CBBC
   FROMADRS=$CAE4      GETBYTE =$CF6B      GETCHAR =$CD10      GETCHOIC=$CC32      GETCHR  =$CCF3      GETCHRC =$0101
   GETCOM  =$CA0E      GETCOMD =$CA00      GETLN   =$CAA9      GETLNC  =$0157      GETLNNO =$CAC2      GETLNNOC=$0167
   GETLNZ  =$CAA6      GETNOT  =$CAB3      GETPPC  =$CA93      GETSYMB =$CCE2      GOATPC  =$CAE7      GOPASCAL=$CD40
   GOTOIO  =$C8CD      GOVEC8  =$CA71      HARDBOFF=$CE8D      HARDPBR =$C92B      HIADD   =$C888      HIRESFLG=$C01D
   HOME    =$CC42      HOMEC   =$019F      IERBUFF =$C839      IN      =$C933      INAUX   =$CA34      INCCH   =$CB4A
   INCMEMLH=$CF2B      INCMEMLHC=$0113     INCSW1  =$CAD1      INCSYMB =$CB1C      INCTEXT =$CBC3      INDEXTO8=$CF31
   INDY80S =$C917      INDYBUF =$C918      INITDISR=$CA81      INITDISRC=$0112     INITFLAG=$C915      INITMMV =$CF06
   INITMMVC=$0103      INITPASC=$CD35      INITPASCC=$015E     INITRAMV=$CC01      INITRAMVC=$0136     INLENGTH=$C95D
   INMAIN  =$CA54      INPASCAL=$CD39      INPASCALC=$0166     INVBREAK=$CB8A      INVCOM  =$01        INVISIBL=$C81E
   INVPROC =$CED6      IOMODE  =$C820      IRQ     =$C84F      IRQENTRY=$C8C2      IRQHI   =$C9FF      IRQJUMP =$C839
   IRQLO   =$C9FE      IRQRAM8 =$FFA2      ISAUX   =$CE02      ISDEC   =$CD3D      ISRAM   =$CB30      ISSYMB  =$CB03
   ITISHEX =$CD3A      JSCONT  =$CC5A      JSERR   =$CC57      JUMPSEG5=$CF9D      KBD     =$C000      KBDSTRB =$C010
   KEY     =$C931      KEYCLIK =$CA74      KEYIN   =$CA8F      KEYIN2  =$CA91      KEYINRTS=$CA9F      KEYPRES =$CA72
   KSWH    =$39        KSWL    =$38        LDAINDY =$CE24      LDAINDYC=$0100      LDAPBRIY=$CE10      LDAPCIY =$CE16
   LDATEMP =$C9DD      LEAVTRC =$CD9A      LEFT5   =$CF59      LEFTRTS =$CB7D      LETTER1 =$C82A      LETTER2 =$C82B
   LETTER3 =$C82C      LETTER4 =$C82D      LETTER5 =$C82E      LETTER6 =$C82F      LF      =$8A        LINEFEED=$CB83
   LIS0    =$CB0B      LIS1    =$CB0A      LIST    =$CB33      LOADMEM =$CF3D      LOADMEMC=$011B      LOADMRTS=$CF4C
   LOADT   =$CBC0      LOOKBRK =$CBDE      LOOKDIR =$CB70      LOWADD  =$C887      LSNYBPW =$CCE6      LTABLE1 =$CA1C
   LTABLE1C=$0106      LTARROW =$88        LTRACEVC=$CBDF      M7CONT  =$CE76      M9CONT  =$CE61      MACHKCOM=$CA4F
   MAERR   =$CAB8      MAERRBY2=$CBFD      MAIN10  =$CF9D      MAIN102 =$CF9D      MAIN103 =$CF9D      MAIN104 =$CF9D
   MAIN11  =$CF9D      MAINCMEM=$CA47      MAINRAM =$CDFE      MAINZP  =$C008      MAKEDOT =$CCAD      MAKENOP =$CE39
   MANEXT  =$CBF3      MANOADDR=$CA24      MANOTRAM=$CC00      MASTLET1=$CA56      MATCH   =$CB86      MATCHPC =$CDD2
   MCCONT  =$CE88      MDAGAIN =$CC06      MDLOOP  =$CC08      MDNOADDR=$CC02      MEMDISP =$CC8A      MEMHI   =$C836
   MEMHORZ =$C95C      MEMLOW  =$C835      MEMPBR  =$C95E      MEMWADR =$C8B0      MFLAG   =$C962      MIXEDOFF=$C052
   MLICODE =$CE56      MLIFLAG =$C838      MMDISASC=$CC9F      MMDISHEX=$CC8F      MMDISOK =$CCAF      MNEMCOMP=$C960
   MNEMTABL=$C92F      MODE    =$C845      MODONE  =$CC1C      MONITOR =$FF69      MORETR  =$CDAC      MOVEMOR2=$CD24
   MOVEMOR3=$CD34      MOVEMORE=$CD13      MOVEONE =$CA56      MOVEZERO=$CA6C      MSG02   =$C832      MSG816  =$C83C
   MSGAVAIL=$C82D      MSGAVAL2=$C8D4      MSGBORD2=$C8D0      MSGBORDR=$C800      MSGBREAK=$C823      MSGBRKPT=$C813
   MSGBROUT=$C80E      MSGCOPYR=$C919      MSGCR   =$C841      MSGCRES =$C987      MSGENTER=$C9D2      MSGET   =$C976
   MSGFLAGS=$C9B9      MSGHARD =$C839      MSGHARDB=$C81C      MSGINVBP=$C800      MSGKEY  =$C806      MSGMODE =$C83E
   MSGMODE2=$C8BB      MSGNOAC =$C85E      MSGNOTRM=$C825      MSGOFF  =$C81E      MSGORNG =$C846      MSGOUT  =$C828
   MSGREAL =$C9DA      MSGREGA =$C800      MSGSKIP =$C800      MSGSWSET=$C800      MSGVERS =$C89C      MSNYBPW =$CCDD
   MSTATE  =$C819      NEWOPER =$CE9E      NEXTFLAG=$CA45      NEXTFLG2=$CB18      NEXTMNEM=$CAB0      NEXTOPCD=$CECC
   NEXTOPER=$CED2      NEXTREG =$CAEA      NEXTSW1 =$CAC6      NEXTSW2 =$CAD9      NEXTSYM =$CB1D      NEXTSYMB=$CCDE
   NEXTTEXT=$CC00      NMI16   =$CA4E      NMI816  =$C82D      NMICOMRT=$CBA1      NMIHI   =$C9FB      NMIHI816=$C9EB
   NMIJUMP =$C827      NMILO   =$C9FA      NMILO816=$C9EA      NMIRAM16=$FFB0      NMIRAM8 =$FFA9      NMITRC  =$CD4A
   NMIVEC  =$CA47      NMIVEC16=$CA42      NOACCESS=$C8A1      NOACMSG =$CB13      NOACMSGC=$0124      NOAST   =$CCA5
   NODISH  =$CB70      NOEFF   =$CE3D      NOEXTEND=$CDD8      NOLIST  =$00        NOPBR   =$C898      NOSPACE =$CDD5
   NOSYMBOL=$CCED      NOTAUX  =$CDF9      NOTBREAK=$CACD      NOTBUTON=$CACE      NOTCR   =$CA8C      NOTCR1  =$CAA1
   NOTFLAG =$CB29      NOTFULL =$CB26      NOTHBR  =$CAFA      NOWROM  =$20        NUMDISP =$C95F      NUMEXP  =$03
   NXTCHAR =$CABF      OFFFLAG =$C821      OFFSETOK=$CBB6      OFFSTEND=$CDB2      OKEXIT1 =$CA90      OLDMSTAT=$C903
   OLDSTACK=$C902      ONEBYTE =$CD82      ONEOFFST=$CDE1      ONIFON  =$CB60      OPCODE  =$C837      OPERAND =$C913
   OURNMI  =$CA8B      OUTMAIN =$CB48      OUTPASCL=$CD58      OUTPASCLC=$0176     OUTPRGR =$CAEE      OUTPRGRC=$011C
   OUTPUT  =$CB36      PACKMNEM=$CF4D      PASCALIO=$CC37      PASCALIOC=$013D     PASSFLG =$C8A5      PBR     =$C81D
   PBRADD  =$C834      PC2LETR =$CECC      PCHI    =$C81C      PCLO    =$C81B      POINT   =$C8FD      POSIBLOP=$CEC3
   POSOFSET=$CD9C      PPMAIN10=$CA0A      PRBL2   =$CA58      PRBL2C  =$0127      PRBLNK  =$CA56      PRBYTE  =$CA40
   PRBYTEC =$0137      PRERR   =$CA1E      PRERRC  =$011F      PRHEX   =$CA4B      PRHEXC  =$0147      PRINT?  =$CE46
   PRNTAX  =$CA3C      PRNTAXC =$013F      PROCESOK=$CF04      PROGONLY=$C8A0      PROMPT  =$C932      PROTADR =$C8D7
   PSAVESEG=$C906      PUTBREAK=$CA00      PUTBREAKC=$0102     PUTBRK2 =$CA08      PUTDONE =$CA80      PUTSLOT =$CFFB
   PWINPUT =$CBE4      RAMRD   =$C013      RAMRDBF =$C929      RAMWRT  =$C014      RAMWRTBF=$C92A      RBTOM11 =$CB8D
   RDCHAR  =$CA2F      RDCHARC =$0117      READAD  =$CD23      READAD2 =$CD09      READAEND=$CD86      READAUX =$C003
   READMAIN=$C002      REALBRK =$C8FC      REALTIME=$C89F      RECEIVE =$CA66      RECEIVEC=$014F      RELADDRS=$CD6B
   RELATIVE=$CB83      RELLONG =$CB92      REPLACE =$CD3B      REPLACEC=$015A      RESETHI =$C9FD      RESETJMP=$C81A
   RESETLO =$C9FC      RESTALTS=$CD0A      RESTALTSC=$0156     RESTAXP0=$CF53      RESTAXP1=$CF39      RESTAXP2=$CEEB
   RESTAXP3=$CF7C      RESTAXP4=$CF7B      RESTAXP5=$CD36      RESTAXP6=$CD90      RESTAXP7=$CF4B      RESTDISP=$CAC1
   RESTDISPC=$011E     RESTFLAG=$C846      RESTRT  =$CF5C      RESTRTC =$014C      RESTRTS =$CAF7      RESTSTK =$CCD7
   RESTTEXT=$CAA0      RESTTEXTC=$0116     RETURN  =$CB7E      RETURN0 =$CFED      RETURN1 =$CFED      RETURN2 =$CFED
   RETURN3 =$CFED      RETURN4 =$CFED      RETURN5 =$CFED      RETURN6 =$CFED      RETURN7 =$CFED      ROMTORAM=$CD11
   ROMTORAMC=$0122     RTARROW =$95        RTBRKFLG=$C8FF      RTOPCODE=$C901      RTSCONT =$CEDD      RTSFLAG =$C8A9
   RTSTK   =$C900      SAVEAXP0=$CF47      SAVEAXP1=$CF2D      SAVEAXP2=$CEDF      SAVEAXP3=$CF70      SAVEAXP4=$CF6F
   SAVEAXP5=$CD2A      SAVEAXP6=$CD84      SAVEAXP7=$CF3F      SAVEDISP=$CB02      SAVEDISPC=$012E     SAVENEXT=$CB8F
   SAVEREG =$CEBC      SAVESTAT=$CA5D      SAVESTK =$CB3A      SAVXYSP =$CEC1      SBTYPE  =$C830      SCRLMAIN=$CBBB
   SCROLL1 =$CB9B      SCROLL2 =$CBB3      SCROLL3 =$CBC9      SDERR   =$CB83      SEGMBASE=$C080      SEGMCODE=$C844
   SELFMOD =$C964      SEND    =$CA61      SET80S  =$CAEA      SET8BIT =$FFBE      SETBASE =$CBD4      SETDRW  =$CB40
   SETMPBR =$CB57      SETMPBRC=$0146      SETMSTAT=$CB3A      SETRTS  =$CA6B      SETSCRN =$CC65      SETSCRNC=$0187
   SETUP   =$CC5E      SETUPRT =$CEF9      SETUPRTC=$0144      SHDIS   =$CB6D      SHFTSYMB=$CB09      SIXTEEN =$CC88
   SKIPDLR =$CD11      SKIPREG =$CD74      SKIPTRAC=$CBEC      SKPBRK  =$CBDB      SLOT2K  =$CB64      SLOTCN  =$C930
   SLOTIO  =$C8C1      SLOTN0  =$C823      SLOTOK  =$CA88      SLOTROM =$C006      SLOTRTS =$C85E      SORTBRK =$CD86
   SPACE   =$CA1A      SPACES  =$CE7A      SPCBYTE =$CCE4      SPKR    =$C030      STACK   =$C817      STACKBUF=$C900
   STAINDY =$CE28      STAINDYC=$0108      STAPCIY =$CC6A      STAPCIYC=$0162      STATPASC=$CD3D      STATPASCC=$016E
   STATUS  =$C81A      STAYIN  =$C804      STEP1   =$CBEB      STEP1C  =$0118      STKBUF  =$C919      STOPBRK =$C83E
   STORE80 =$C018      STOROPER=$CBDF      STR80OFF=$C000      STR80ON =$C001      STRIP   =$CCE9      STRIPMW =$CDA9
   STRT2FLG=$C822      SUBD1   =$CEFA      SUBTABL0=$CF5F      SUBTABL1=$CF45      SUBTABL2=$CEF7      SUBTABL3=$CF88
   SUBTABL4=$CF87      SUBTABL5=$CD42      SUBTABL6=$CD9C      SUBTABL7=$CF57      SUBTRACE=$C842      SVESCONT=$CB07
   SVESTK  =$CB40      SVESTK16=$CB3E      SVNUMBYT=$CC89      SVTXTINC=$CBDA      SWAPLET =$CF0E      SWCHON1 =$CACE
   SWCHON2 =$CAE1      SWCHON3 =$CAF4      SYMBDONE=$CB4A      SYMBEND =$CCF3      T3BYTE2 =$CE27      TABLE1  =$C91C
   TABLE2  =$C801      TABLE3  =$C901      TABLE4  =$CA01      TBL3END =$C92F      TCOUNT  =$C89C      TEMP    =$C9E1
   TEMPSEG =$C9DE      TEXTON  =$C051      TFLAG   =$C89E      THISSEG =$CBFD      TOBPX   =$CAE5      TOBPX2  =$CB52
   TOCOUT  =$CB56      TOERR1  =$CBFF      TOERR5  =$CB67      TOEXECUT=$C885      TOGOFLG =$C963      TOIOJUMP=$CA79
   TOMAERR =$CB47      TOMAIN10=$CBBD      TOPASCAL=$C8DB      TORDCHAR=$CA26      TORDCHARC=$010E     TOTRACEN=$CDDE
   TRACE1  =$CBD2      TRACE1C =$0110      TRACEN  =$CC30      TRACEND =$CD8C      TRANSFR0=$CFAE      TRANSFR1=$CFAE
   TRANSFR2=$CFAE      TRANSFR3=$CFAE      TRANSFR4=$CFAE      TRANSFR5=$CFAE      TRANSFR6=$CFAE      TRANSFR7=$CFAE
   TRCBRK  =$C8A2      TSCONT  =$CC1D      TSCONTC =$012D      TSEXEC  =$CB6D      TSFLAG  =$C8AB      TWOBYTE =$CDD5
   TXSFLG  =$C8FB      TXTPAGE1=$C054      TXTPAGE2=$C055      TYPEOK  =$CC4F      UNPACK  =$CCB6      UPARROW =$8B
   UPDATE  =$CA38      UPDBRKW =$CAC1      UPDTMW  =$CDA6      USERSUB =$CDFA      VALID2  =$CE2E      VALIDAD =$CE2C
   VALIDADC=$0152      VALIDPC =$CE29      VECTSAVE=$C83C      VIAACR  =$C80B      VIADRA  =$C803      VIADRB  =$C802
   VIAIER  =$C80E      VIAIFR  =$C80D      VIAORA  =$C801      VIAORB  =$C810      VIAPCR  =$C80C      VIAT1CH =$C805
   VIAT1CL =$C804      VIAT2CH =$C809      VIAT2CL =$C808      VIDOUT  =$CB62      VTAB    =$CBD1      VTABC   =$018F
   WAIT    =$CC50      WAIT2   =$CC51      WAIT3   =$CC52      WAITC   =$017F      WAITCR  =$CD0B      WAITCRC =$0155
   WARMINIT=$CC9E      WARMINITC=$017E     WINDBTM =$C958      WINDDR  =$CCF2      WINDDRC =$0132      WINDFLG =$C8A4
   WINDFUL =$CB3C      WINDFULC=$012C      WINDLEFT=$C955      WINDM10 =$CC49      WINDTOP =$C957      WINDWDTH=$C956
   WRINIT1 =$CDB8      WRINIT2 =$CC83      WRINIT4 =$CB1F      WRINIT5 =$CB0A      WRINIT6 =$CCE3      WRITAUX =$C005
   WRITDON1=$CDDC      WRITDON2=$CC9B      WRITDON4=$CB38      WRITDON5=$CB23      WRITDON7=$CD35      WRITEAUX=$CC5C
   WRITECK1=$CDC2      WRITECK2=$CC8D      WRITECK4=$CB29      WRITECK5=$CB14      WRITECK6=$CCED      WRITECK7=$CD27
   WRITMAIN=$C004      WRITMOR1=$CDBD      WRITMOR2=$CC88      WRITMOR4=$CB24      WRITMOR5=$CB0F      WRITMOR6=$CCE8
   WRITMOR7=$CD22      WRITREG =$CADA      WRTAUXIN=$CA87      XBUFF   =$C841      XOFFSET =$CB33      XREG    =$C813
   XSAVESEG=$C905      XSPACES =$CA5A      YBUF2   =$C840      YBUFF   =$C83F      YNOTZER0=$CC5C      YREG    =$C815
   Z1HI    =$21        Z1LO    =$20        Z2HI    =$23        Z2LO    =$22        ZBUF5   =$24        ZBUF6   =$25
   ZBYTE1  =$C826      ZBYTE2  =$C827      ZBYTE3  =$C828      ZPAGEXT =$C890      ZPAGSAVE=$CAF8      ZPAGSAVEC=$0126


Symbol table, numerical order:

   NOLIST  =$00        INVCOM  =$01        NUMEXP  =$03        BADPAR  =$04        BRKFUL  =$10        Z1LO    =$20
   NOWROM  =$20        Z1HI    =$21        Z2LO    =$22        Z2HI    =$23        ZBUF5   =$24        ZBUF6   =$25
   BASL    =$28        BASH    =$29        BAS2L   =$2A        BAS2H   =$2B        CSWL    =$36        CSWH    =$37
   KSWL    =$38        KSWH    =$39        EOT     =$84        BEL     =$87        LTARROW =$88        LF      =$8A
   DNARROW =$8A        UPARROW =$8B        CR      =$8D        CTRLS   =$93        RTARROW =$95        CTRLX   =$98
   ESC     =$9B        DELETE  =$FF        LDAINDYC=$0100      GETCHRC =$0101      PUTBREAKC=$0102     INITMMVC=$0103
   DISBROUTC=$0104     LTABLE1C=$0106      COUTC   =$0107      STAINDYC=$0108      CHKREADC=$0109      DECMEMLHC=$010B
   DISNOTRMC=$010C     TORDCHARC=$010E     CROUTC  =$010F      TRACE1C =$0110      CHKREADAC=$0111     INITDISRC=$0112
   INCMEMLHC=$0113     DISHARDC=$0114      ETVCONTC=$0115      RESTTEXTC=$0116     RDCHARC =$0117      STEP1C  =$0118
   DSMEMCOLC=$0119     LOADMEMC=$011B      OUTPRGRC=$011C      DISVERSC=$011D      RESTDISPC=$011E     PRERRC  =$011F
   EXECUTEC=$0120      DSPBRKC =$0121      ROMTORAMC=$0122     DISASMC =$0123      NOACMSGC=$0124      COPYRC  =$0125
   ZPAGSAVEC=$0126     PRBL2C  =$0127      DSPHBPC =$0129      DISPONC =$012A      WINDFULC=$012C      TSCONTC =$012D
   SAVEDISPC=$012E     WINDDRC =$0132      BANKCHEKC=$0134     ERRBEEPC=$0135      INITRAMVC=$0136     PRBYTEC =$0137
   DECTGPCC=$013A      CALCEFFC=$013C      PASCALIOC=$013D     PRNTAXC =$013F      SETUPRTC=$0144      CKACCESC=$0145
   SETMPBRC=$0146      PRHEXC  =$0147      RESTRTC =$014C      CHKRANGC=$014D      DSPBORDRC=$014E     RECEIVEC=$014F
   VALIDADC=$0152      WAITCRC =$0155      RESTALTSC=$0156     GETLNC  =$0157      REPLACEC=$015A      INITPASCC=$015E
   STAPCIYC=$0162      INPASCALC=$0166     GETLNNOC=$0167      STATPASCC=$016E     CLREOLC =$016F      OUTPASCLC=$0176
   BELLC   =$0177      WARMINITC=$017E     WAITC   =$017F      SETSCRNC=$0187      VTABC   =$018F      CLRHOMEC=$0197
   HOMEC   =$019F      DISFLGWC=$01A7      DISMEMWC=$01AF      DISBRKWC=$01BF      DISPROTWC=$01C7     DISSTKWC=$01CF
   DISFMESC=$01D7      KBD     =$C000      STR80OFF=$C000      STR80ON =$C001      READMAIN=$C002      READAUX =$C003
   WRITMAIN=$C004      WRITAUX =$C005      SLOTROM =$C006      CXON    =$C007      MAINZP  =$C008      AUXZP   =$C009
   COL80ON =$C00D      KBDSTRB =$C010      RAMRD   =$C013      RAMWRT  =$C014      CXFLAG  =$C015      ALTZP   =$C016
   STORE80 =$C018      HIRESFLG=$C01D      SPKR    =$C030      TEXTON  =$C051      MIXEDOFF=$C052      TXTPAGE1=$C054
   TXTPAGE2=$C055      SEGMBASE=$C080      CXONRTI =$C080      CXOKLOAD=$C083      CXOKRTI =$C083      MSGINVBP=$C800
   MSGSKIP =$C800      MSGSWSET=$C800      MSGBORDR=$C800      MSGREGA =$C800      COMMANDS=$C800      TABLE2  =$C801
   VIAORA  =$C801      VIADRB  =$C802      VIADRA  =$C803      VIAT1CL =$C804      STAYIN  =$C804      VIAT1CH =$C805
   MSGKEY  =$C806      VIAT2CL =$C808      VIAT2CH =$C809      VIAACR  =$C80B      VIAPCR  =$C80C      VIAIFR  =$C80D
   VIAIER  =$C80E      MSGBROUT=$C80E      VIAORB  =$C810      ACC     =$C811      XREG    =$C813      MSGBRKPT=$C813
   YREG    =$C815      STACK   =$C817      MSTATE  =$C819      STATUS  =$C81A      RESETJMP=$C81A      FLAGS   =$C81B
   PCLO    =$C81B      PCHI    =$C81C      MSGHARDB=$C81C      PBR     =$C81D      MSGOFF  =$C81E      INVISIBL=$C81E
   CMOSFLAG=$C81F      IOMODE  =$C820      OFFFLAG =$C821      STRT2FLG=$C822      MSGBREAK=$C823      SLOTN0  =$C823
   MSGNOTRM=$C825      ZBYTE1  =$C826      ZBYTE2  =$C827      NMIJUMP =$C827      MSGOUT  =$C828      ZBYTE3  =$C828
   DATABRK =$C829      LETTER1 =$C82A      LETTER2 =$C82B      LETTER3 =$C82C      NMI816  =$C82D      LETTER4 =$C82D
   MSGAVAIL=$C82D      LETTER5 =$C82E      LETTER6 =$C82F      CXONTFR =$C830      SBTYPE  =$C830      DECIMAL1=$C831
   MSG02   =$C832      DECIMAL2=$C832      BREAK816=$C833      DECIMAL3=$C833      PBRADD  =$C834      MEMLOW  =$C835
   MEMHI   =$C836      OPCODE  =$C837      MLIFLAG =$C838      BRKTYPE =$C838      IRQJUMP =$C839      MSGHARD =$C839
   IERBUFF =$C839      ENABLTVC=$C83A      MSG816  =$C83C      VECTSAVE=$C83C      MSGMODE =$C83E      STOPBRK =$C83E
   YBUFF   =$C83F      YBUF2   =$C840      XBUFF   =$C841      MSGCR   =$C841      SUBTRACE=$C842      SEGMCODE=$C844
   MODE    =$C845      RESTFLAG=$C846      MSGORNG =$C846      COMDJUMP=$C84E      IRQ     =$C84F      CMNDSEG1=$C85A
   EXTENAB =$C85B      SLOTRTS =$C85E      MSGNOAC =$C85E      BRKPBR  =$C86A      DISPTABL=$C86F      CMNDSEG2=$C87C
   ACTVSLOT=$C885      TOEXECUT=$C885      LOWADD  =$C887      CMNDSEG3=$C888      HIADD   =$C888      CMNDSEG4=$C88A
   ZPAGEXT =$C890      BANKTABL=$C891      CMNDSEG5=$C896      NOPBR   =$C898      MSGVERS =$C89C      BRKHI   =$C89C
   TCOUNT  =$C89C      TFLAG   =$C89E      REALTIME=$C89F      PROGONLY=$C8A0      NOACCESS=$C8A1      TRCBRK  =$C8A2
   BRKWFLG =$C8A3      WINDFLG =$C8A4      PASSFLG =$C8A5      EFLAG   =$C8A8      RTSFLAG =$C8A9      TSFLAG  =$C8AB
   ETFLAG  =$C8AC      DISPFLAG=$C8AE      MEMWADR =$C8B0      EFFTABL =$C8B5      MSGMODE2=$C8BB      SLOTIO  =$C8C1
   IRQENTRY=$C8C2      DATATFR =$C8C8      GOTOIO  =$C8CD      BRKLOW  =$C8CE      MSGBORD2=$C8D0      MSGAVAL2=$C8D4
   EFFADRS =$C8D4      PROTADR =$C8D7      CXWASOFF=$C8D8      TOPASCAL=$C8DB      TXSFLG  =$C8FB      REALBRK =$C8FC
   POINT   =$C8FD      COMRTFLG=$C8FE      RTBRKFLG=$C8FF      BRKTGHI =$C900      STACKBUF=$C900      RTSTK   =$C900
   RTOPCODE=$C901      TABLE3  =$C901      OLDSTACK=$C902      OLDMSTAT=$C903      ASAVESEG=$C904      XSAVESEG=$C905
   PSAVESEG=$C906      ETIERSAV=$C90E      ETORASAV=$C90F      ETORBSAV=$C910      ETPCLO  =$C911      ETPCHI  =$C912
   OPERAND =$C913      INITFLAG=$C915      INDY80S =$C917      INDYBUF =$C918      MSGCOPYR=$C919      STKBUF  =$C919
   TABLE1  =$C91C      RAMRDBF =$C929      RAMWRTBF=$C92A      HARDPBR =$C92B      DTOHFLG =$C92C      ADDRS2F =$C92D
   EMULATE =$C92E      MNEMTABL=$C92F      TBL3END =$C92F      CXSTATUS=$C92F      SLOTCN  =$C930      KEY     =$C931
   BRKTGLOW=$C932      PROMPT  =$C932      IN      =$C933      BASBUF  =$C951      WINDLEFT=$C955      WINDWDTH=$C956
   WINDTOP =$C957      WINDBTM =$C958      CURSHORZ=$C959      CURSVERT=$C95A      MEMHORZ =$C95C      INLENGTH=$C95D
   MEMPBR  =$C95E      NUMDISP =$C95F      MNEMCOMP=$C960      MFLAG   =$C962      TOGOFLG =$C963      SELFMOD =$C964
   BRKPASHI=$C964      MSGET   =$C976      MSGCRES =$C987      BRKPASLO=$C996      MSGFLAGS=$C9B9      BRKDATA =$C9C8
   MSGENTER=$C9D2      MSGREAL =$C9DA      LDATEMP =$C9DD      TEMPSEG =$C9DE      TEMP    =$C9E1      BRKLO816=$C9E6
   BRKHI816=$C9E7      NMILO816=$C9EA      NMIHI816=$C9EB      NMILO   =$C9FA      NMIHI   =$C9FB      RESETLO =$C9FC
   RESETHI =$C9FD      IRQLO   =$C9FE      IRQHI   =$C9FF      COMDSKIP=$CA00      PUTBREAK=$CA00      GETCOMD =$CA00
   COMDDOTP=$CA00      CROUT   =$CA00      BRKVEC16=$CA00      TABLE4  =$CA01      COUT    =$CA02      PUTBRK2 =$CA08
   BREAK   =$CA09      PPMAIN10=$CA0A      COMDPP  =$CA0D      BRK16   =$CA0D      GETCOM  =$CA0E      COMDMA  =$CA14
   SPACE   =$CA1A      LTABLE1 =$CA1C      DISPSTAT=$CA1D      PRERR   =$CA1E      MANOADDR=$CA24      FLAGON  =$CA25
   TORDCHAR=$CA26      DISPIOR0=$CA27      COMDKEY =$CA29      BELL    =$CA2B      RDCHAR  =$CA2F      INAUX   =$CA34
   UPDATE  =$CA38      PRNTAX  =$CA3C      ERROR4  =$CA3E      PRBYTE  =$CA40      NMIVEC16=$CA42      NEXTFLAG=$CA45
   NMIVEC  =$CA47      COMDSS  =$CA47      MAINCMEM=$CA47      PRHEX   =$CA4B      NMI16   =$CA4E      MACHKCOM=$CA4F
   INMAIN  =$CA54      MASTLET1=$CA56      PRBLNK  =$CA56      MOVEONE =$CA56      PRBL2   =$CA58      XSPACES =$CA5A
   SAVESTAT=$CA5D      SEND    =$CA61      CHKZERO =$CA63      RECEIVE =$CA66      SETRTS  =$CA6B      MOVEZERO=$CA6C
   GOVEC8  =$CA71      KEYPRES =$CA72      KEYCLIK =$CA74      CHKRETRN=$CA76      TOIOJUMP=$CA79      COMDPC  =$CA7C
   PUTDONE =$CA80      INITDISR=$CA81      WRTAUXIN=$CA87      SLOTOK  =$CA88      BADPARX =$CA8A      OURNMI  =$CA8B
   ERREXIT1=$CA8C      NOTCR   =$CA8C      KEYIN   =$CA8F      OKEXIT1 =$CA90      KEYIN2  =$CA91      GETPPC  =$CA93
   FINDMNEM=$CA94      KEYINRTS=$CA9F      RESTTEXT=$CAA0      NOTCR1  =$CAA1      GETLNZ  =$CAA6      GETLN   =$CAA9
   NEXTMNEM=$CAB0      COMDPA  =$CAB0      GETNOT  =$CAB3      DISVERS =$CAB7      MAERR   =$CAB8      BCKSPC  =$CABB
   COMDPX  =$CABB      NXTCHAR =$CABF      RESTDISP=$CAC1      UPDBRKW =$CAC1      GETLNNO =$CAC2      NEXTSW1 =$CAC6
   COMDPY  =$CAC6      DISBROUT=$CACA      NOTBREAK=$CACD      NOTBUTON=$CACE      SWCHON1 =$CACE      FOUNDMNE=$CAD1
   COMDPS  =$CAD1      INCSW1  =$CAD1      DISNOTRM=$CAD6      NEXTSW2 =$CAD9      WRITREG =$CADA      COMDGO  =$CAE0
   CHEKSYMB=$CAE1      SWCHON2 =$CAE1      DISHARD =$CAE2      FROMADRS=$CAE4      DECSW1  =$CAE4      TOBPX   =$CAE5
   DISREG2 =$CAE6      GOATPC  =$CAE7      NEXTREG =$CAEA      SET80S  =$CAEA      OUTPRGR =$CAEE      COMMDRCL=$CAEF
   SWCHON3 =$CAF4      COMDSB  =$CAF5      COPYR   =$CAF6      RESTRTS =$CAF7      ZPAGSAVE=$CAF8      NOTHBR  =$CAFA
   CLRSHFT =$CB00      SAVEDISP=$CB02      ISSYMB  =$CB03      SVESCONT=$CB07      SHFTSYMB=$CB09      LIS1    =$CB0A
   WRINIT5 =$CB0A      LIS0    =$CB0B      WRITMOR5=$CB0F      DOCOUT  =$CB11      NOACMSG =$CB13      WRITECK5=$CB14
   NEXTFLG2=$CB18      CONTNMI =$CB19      INCSYMB =$CB1C      NEXTSYM =$CB1D      WRINIT4 =$CB1F      FLAGSET =$CB20
   WRITDON5=$CB23      BELLONE =$CB24      WRITMOR4=$CB24      NOTFULL =$CB26      COMDLI  =$CB27      NOTFLAG =$CB29
   WRITECK4=$CB29      BELLTWO =$CB2A      ISRAM   =$CB30      XOFFSET =$CB33      LIST    =$CB33      BELLRTS =$CB35
   OUTPUT  =$CB36      WRITDON4=$CB38      SETMSTAT=$CB3A      SAVESTK =$CB3A      WINDFUL =$CB3C      SVESTK16=$CB3E
   SVESTK  =$CB40      SETDRW  =$CB40      DISBREAK=$CB46      TOMAERR =$CB47      BKPDIS  =$CB47      OUTMAIN =$CB48
   SYMBDONE=$CB4A      INCCH   =$CB4A      COMDHB  =$CB4D      COMDON  =$CB52      TOBPX2  =$CB52      TOCOUT  =$CB56
   SETMPBR =$CB57      COMDSD  =$CB5A      COMDET  =$CB5E      EXCHTEXT=$CB5F      ONIFON  =$CB60      VIDOUT  =$CB62
   SLOT2K  =$CB64      BPERR5  =$CB65      DISPON  =$CB66      TOERR5  =$CB67      TSEXEC  =$CB6D      SHDIS   =$CB6D
   NODISH  =$CB70      LOOKDIR =$CB70      CALCTIME=$CB71      COMDRB  =$CB76      LEFTRTS =$CB7D      RETURN  =$CB7E
   LINEFEED=$CB83      RELATIVE=$CB83      SDERR   =$CB83      COMDOFF =$CB86      MATCH   =$CB86      ENTEREXT=$CB87
   INVBREAK=$CB8A      RBTOM11 =$CB8D      SAVENEXT=$CB8F      COMDRH  =$CB90      COMDRT  =$CB91      RELLONG =$CB92
   COMDRA  =$CB96      COMDMO  =$CB97      SCROLL1 =$CB9B      COMDMM  =$CB9C      NMICOMRT=$CBA1      COMDEX  =$CBA9
   COMDTR  =$CBAC      BNCHBACK=$CBAD      SCROLL2 =$CBB3      BADPAR0 =$CBB4      ERREXIT0=$CBB6      OFFSETOK=$CBB6
   SCRLMAIN=$CBBB      FOUNDOP =$CBBC      TOMAIN10=$CBBD      LOADT   =$CBC0      INCTEXT =$CBC3      SCROLL3 =$CBC9
   COMDER  =$CBCF      VTAB    =$CBD1      ETERR   =$CBD2      TRACE1  =$CBD2      COMDPW  =$CBD2      SETBASE =$CBD4
   ETVCONT =$CBD7      ADRHEX  =$CBD8      SVTXTINC=$CBDA      SKPBRK  =$CBDB      LOOKBRK =$CBDE      LTRACEVC=$CBDF
   STOROPER=$CBDF      PWINPUT =$CBE4      STEP1   =$CBEB      SKIPTRAC=$CBEC      MANEXT  =$CBF3      COMDMD  =$CBF7
   MAERRBY2=$CBFD      THISSEG =$CBFD      ETRESTOR=$CBFE      TOERR1  =$CBFF      MANOTRAM=$CC00      NEXTTEXT=$CC00
   CLREOL  =$CC01      INITRAMV=$CC01      MDNOADDR=$CC02      CLEOLZ  =$CC04      MDAGAIN =$CC06      BRNCHOUT=$CC07
   MDLOOP  =$CC08      MODONE  =$CC1C      TSCONT  =$CC1D      DISASM  =$CC1F      DISMODE =$CC26      CLRHOME =$CC29
   CMDMENU =$CC2B      CLRBOT  =$CC2F      TRACEN  =$CC30      GETCHOIC=$CC32      PASCALIO=$CC37      HOME    =$CC42
   CHK816  =$CC47      WINDM10 =$CC49      TYPEOK  =$CC4F      CHKKSW  =$CC4F      COMDJS  =$CC50      WAIT    =$CC50
   WAIT2   =$CC51      WAIT3   =$CC52      ERRBEEP =$CC56      JSERR   =$CC57      JSCONT  =$CC5A      WRITEAUX=$CC5C
   YNOTZER0=$CC5C      SETUP   =$CC5E      SETSCRN =$CC65      STAPCIY =$CC6A      CKACCES =$CC71      CLEARALL=$CC74
   FLGMOFF =$CC7C      CLRHARD =$CC81      CHK16X  =$CC83      WRINIT2 =$CC83      ANDDSFL =$CC84      WRITMOR2=$CC88
   SIXTEEN =$CC88      DISFLGW =$CC89      SVNUMBYT=$CC89      MEMDISP =$CC8A      WRITECK2=$CC8D      MMDISHEX=$CC8F
   WRITDON2=$CC9B      COUT2   =$CC9C      WARMINIT=$CC9E      MMDISASC=$CC9F      COMDQU  =$CCA1      COMDAST =$CCA4
   NOAST   =$CCA5      MAKEDOT =$CCAD      DSPBORDR=$CCAD      MMDISOK =$CCAF      UNPACK  =$CCB6      DSMEMCOL=$CCBD
   RESTSTK =$CCD7      CHKRANG =$CCD9      MSNYBPW =$CCDD      NEXTSYMB=$CCDE      GETSYMB =$CCE2      WRINIT6 =$CCE3
   SPCBYTE =$CCE4      LSNYBPW =$CCE6      WRITMOR6=$CCE8      STRIP   =$CCE9      NOSYMBOL=$CCED      WRITECK6=$CCED
   WINDDR  =$CCF2      GETCHR  =$CCF3      SYMBEND =$CCF3      CHKHEX  =$CCF7      EMPTY   =$CCFE      CHKREAD =$CCFF
   CHKREADA=$CD01      READAD2 =$CD09      RESTALTS=$CD0A      WAITCR  =$CD0B      FLAGDISP=$CD0F      GETCHAR =$CD10
   SKIPDLR =$CD11      ROMTORAM=$CD11      MOVEMORE=$CD13      BIT0    =$CD16      BRKTRC  =$CD17      COMDMW  =$CD18
   WRITMOR7=$CD22      READAD  =$CD23      MOVEMOR2=$CD24      WRITECK7=$CD27      SAVEAXP5=$CD2A      MOVEMOR3=$CD34
   INITPASC=$CD35      WRITDON7=$CD35      RESTAXP5=$CD36      CKRDERR =$CD38      INPASCAL=$CD39      DISMEMW =$CD39
   ITISHEX =$CD3A      REPLACE =$CD3B      STATPASC=$CD3D      ISDEC   =$CD3D      GOPASCAL=$CD40      SUBTABL5=$CD42
   NMITRC  =$CD4A      OUTPASCL=$CD58      RELADDRS=$CD6B      SKIPREG =$CD74      DISEFFW =$CD79      ONEBYTE =$CD82
   SAVEAXP6=$CD84      READAEND=$CD86      SORTBRK =$CD86      TRACEND =$CD8C      RESTAXP6=$CD90      COMDDR  =$CD96
   LEAVTRC =$CD9A      POSOFSET=$CD9C      SUBTABL6=$CD9C      ASLUPMW =$CD9D      DISPSIGN=$CD9E      ADDRS2  =$CDA1
   UPDTMW  =$CDA6      EXCONT  =$CDA8      STRIPMW =$CDA9      MORETR  =$CDAC      CHKCTRLS=$CDAC      OFFSTEND=$CDB2
   BANKCHEK=$CDB7      WRINIT1 =$CDB8      DISPADDR=$CDBA      WRITMOR1=$CDBD      WRITECK1=$CDC2      MATCHPC =$CDD2
   TWOBYTE =$CDD5      NOSPACE =$CDD5      NOEXTEND=$CDD8      CHKESC  =$CDDA      WRITDON1=$CDDC      DISBKP  =$CDDD
   DISBRKW =$CDDD      TOTRACEN=$CDDE      ONEOFFST=$CDE1      DOSUB   =$CDE1      NOTAUX  =$CDF9      USERSUB =$CDFA
   ETVECTOR=$CDFD      DISPASIS=$CDFE      MAINRAM =$CDFE      ISAUX   =$CE02      COMDTS  =$CE04      BANKSET =$CE07
   BANKEFF =$CE0B      DSPBRK  =$CE10      LDAPBRIY=$CE10      DISPAS2 =$CE15      LDAPCIY =$CE16      DECTGPC =$CE22
   LDAINDY =$CE24      DECTOGO =$CE25      T3BYTE2 =$CE27      STAINDY =$CE28      VALIDPC =$CE29      CALCEFF =$CE2A
   DISPROTW=$CE2C      VALIDAD =$CE2C      CARDSLT1=$CE2D      VALID2  =$CE2E      MAKENOP =$CE39      NOEFF   =$CE3D
   EFFM5   =$CE3E      PRINT?  =$CE46      EFFADC  =$CE4B      EFFSTA  =$CE4D      ENDDISAS=$CE51      EFFM6   =$CE53
   MLICODE =$CE56      EFFADC2 =$CE58      DISPBYTS=$CE59      EFFM8   =$CE5E      DISHB   =$CE60      M9CONT  =$CE61
   EFFM9   =$CE6A      DSPHBP  =$CE6B      EFFM7   =$CE6F      M7CONT  =$CE76      SPACES  =$CE7A      DBYTEEND=$CE7E
   BYTESP3 =$CE7F      EFFM10  =$CE80      EFFMA   =$CE85      COUT3   =$CE85      MCCONT  =$CE88      DECMEMLH=$CE8A
   DISSTKW =$CE8B      HARDBOFF=$CE8D      DISINVBP=$CE8E      EFFMB   =$CE94      CARDSLOT=$CE95      DECHEX  =$CE9A
   FINDOPCD=$CE9C      NEWOPER =$CE9E      EFFMC   =$CE9F      EXECMOVE=$CEA1      EFFMF   =$CEA4      EXECUTE =$CEA5
   EXSETUP =$CEB1      SAVEREG =$CEBC      SAVXYSP =$CEC1      POSIBLOP=$CEC3      EFFM12  =$CEC9      NEXTOPCD=$CECC
   PC2LETR =$CECC      NEXTOPER=$CED2      INVPROC =$CED6      CHKMODE =$CED8      RTSCONT =$CEDD      EFFM11  =$CEDD
   DHRTS   =$CEDE      SAVEAXP2=$CEDF      ADDL1   =$CEE2      EFFM13  =$CEE6      ADDL2   =$CEEB      RESTAXP2=$CEEB
   DISFMES =$CEEB      EFFM14  =$CEF5      SUBTABL2=$CEF7      SETUPRT =$CEF9      SUBD1   =$CEFA      DSPADRS =$CF01
   CLRLETER=$CF02      PROCESOK=$CF04      INITMMV =$CF06      DSP16ADR=$CF0C      SWAPLET =$CF0E      EXCHZPAG=$CF12
   DSMWASC =$CF18      ENABWRIT=$CF23      ENABINIT=$CF28      INCMEMLH=$CF2B      SAVEAXP1=$CF2D      DSPCBYT =$CF2E
   INDEXTO8=$CF31      RESTAXP1=$CF39      LOADMEM =$CF3D      SAVEAXP7=$CF3F      SUBTABL1=$CF45      SAVEAXP0=$CF47
   RESTAXP7=$CF4B      LOADMRTS=$CF4C      PACKMNEM=$CF4D      RESTAXP0=$CF53      SUBTABL7=$CF57      LEFT5   =$CF59
   RESTRT  =$CF5C      SUBTABL0=$CF5F      GETBYTE =$CF6B      SAVEAXP4=$CF6F      SAVEAXP3=$CF70      RESTAXP4=$CF7B
   RESTAXP3=$CF7C      SUBTABL4=$CF87      SUBTABL3=$CF88      MAIN104 =$CF9D      MAIN10  =$CF9D      MAIN11  =$CF9D
   JUMPSEG5=$CF9D      MAIN102 =$CF9D      MAIN103 =$CF9D      TRANSFR7=$CFAE      TRANSFR0=$CFAE      TRANSFR1=$CFAE
   TRANSFR2=$CFAE      TRANSFR3=$CFAE      TRANSFR4=$CFAE      TRANSFR5=$CFAE      TRANSFR6=$CFAE      RETURN0 =$CFED
   RETURN1 =$CFED      RETURN2 =$CFED      RETURN3 =$CFED      RETURN4 =$CFED      RETURN5 =$CFED      RETURN6 =$CFED
   RETURN7 =$CFED      PUTSLOT =$CFFB      COUT1APL=$FDF0      MONITOR =$FF69      DATACHK =$FFA0      IRQRAM8 =$FFA2
   NMIRAM8 =$FFA9      NMIRAM16=$FFB0      BRKRAM16=$FFB7      SET8BIT =$FFBE      DATA16  =$FFCB      CXOFF   =$FFD5


